2011-06-08 249 views
0

我有一個.net 2.0 C#客戶端應用程序具有對Web服務的引用Axis2 Java Webservice。 這個想法是發送一些XML數據到Web服務,所以它可以被解析並插入到數據庫中。 WS方法接受類型'xsd:anytype'的單個參數。.net客戶端使用Axis2 Web服務

的Java Web服務:

public class JWS{  
    public Response AddData(Object inputXML) {    
     return Response; 
    } 
} 

C#客戶:

JWS client = new JWS(); 
object inputXML = "<xml>some xml data</xml>"; 
response = client.AddData(inputXML); 

有2個問題,使用招監測時,我看到。

1)請求具有附加元件'<inputXML>'實際的XML數據之前添加。

<inputXML>&lt;xml&gt;some xml data&lt;/xml&gt;</inputXML> 

2)XML編碼,所以「<」被顯示爲"&lt;"

我不知道這是怎麼SOAP請求的產生,但我想刪除<inputXML>標籤也,讓xml按原樣顯示,而不必替換特殊字符。

這可能嗎?它是否與'Wrapping'/'UnWrapping'類型有關?

而且,我已經使用了SoapUI測試Java Web服務,而且運作良好。但是,在請求標籤中,我必須手動刪除<inputXML>標籤並提交它才能正常工作。請幫忙。

TIA

回答

0

我發現問題不在於編碼,而是在axis2中查看消息時在java端解釋不正確。所以,它正在得到正確的解碼。此外,inputxml現在正在正確處理。

1

這是預期下,SOAP行爲,並傳遞給你的Web服務方法時inputXml變量將被解碼回原始字符串。

然而,這可能表明你的設計有問題,你有沒有考慮構造一個對象發送到Web服務,而不是XML數據? (因爲無論如何,這個對象將透明地轉換爲XML的Web服務調用)。

+0

你能舉個例子嗎? – SoftwareGeek 2011-06-08 02:27:14

+0

對不起,我對你遇到的問題有點不確定,你能給出更多關於如何生成C#客戶端的細節,並且你可以給出拋出的實際錯誤的輸出結果嗎?你有調試器中的Web服務來獲取inputXML的實際值嗎? – 2011-06-08 02:38:55

+0

我在c#項目中向java ws添加了一個web服務引用。當我調試時,我看到使用fiddler的請求和響應&我的整個xml被java webservice接收,但是xml被編碼,並且在xml之前還有另一個與參數(inputXML)同名的元素。這是如何工作的? – SoftwareGeek 2011-06-09 00:25:04