2011-04-12 36 views
0

我有一個基於Web的Axis2構建的Web服務。 WSDL由Eclipse 3.6嚮導生成。命名空間問題從Flex4調用Axis2 Web服務與Flex Builder生成的客戶端自測

我有一個Flex 4客戶端通過Flash Builder中的WSDL使用內省4.

對於呼叫其中,該方法需要一個「簡單」的類型(如String)或者int,這一切似乎確定,但對於呼叫建立地方該參數(在Java端)和的OMElement,即XML數據,我設置以下運行時錯誤的服務:

org.apache.axis2.engine.AxisEngine - namespace mismatch require http://server.rsc.geo.othermaps.com found none 

http://server.rsc.geo.othermaps.com確實是在WSDL聲明的目標名稱空間。

相同的工作流(使用從web service內省構建的自動生成的客戶端)在Flex 3中對相同的服務工作正常,所以我不確定從何處開始打獵。所以我真的需要手動將名稱空間添加到我提交的XML數據中?

d

回答

0

如果你的XML是要回來沒有頂部的namespace聲明,我肯定會添加它。

+0

是的,它是母鹿似乎需要它 - 但在Flex 3中並沒有這種情況。猜測這是另一個問題,但是在Flex 3和Flex 3之間的Web服務自檢嚮導生成的Web服務類中, Flex 4 ?! – 2011-04-19 11:20:27

0

您正在嘗試使用由Axis2創建的SOAP Web服務。

確保您的SOAP ENVELOPPE要求命名空間中的WSDL命名空間完全一致:

比方說,你的命名空間名稱是:yourNamespace

你的HTTP POST請求應該是這樣的:

<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:v2="yourNamespace"> 
    <soap:Body> 
    <v2:yourActionName> 
    <v2:yourFirstParameter>yourFirstParameterValue</v2:yourFirstParameter> 
    <v2:yourSecondParameter>yourSecondParameterValue</v2:yourSecondParameter> 
    </v2:yourActionName> 
    </soap:Body> 
</soap:Envelope> 

WSDL應該以:

<wsdl:definitions targetNamespace="yourNamespace"> 
<wsdl:documentation>yourWebServiceProjectNameHere</wsdl:documentation> 
    <wsdl:types> 
    <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="yourNamespace"> 
相關問題