2010-10-26 52 views
0

我有一個用Java編寫的Web服務,現在我想要在.NET世界中使用該Web服務。我使用WSDL向我的.NET應用程序添加代理類,但是當我調用Java Web服務方法時,響應始終爲空。任何人都熟悉這個問題?從.NET使用Java Web服務

更新1:

我注意到另一件事是,我打開svcinfo文件中的一個,發現下面的代碼:

<endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;http://fff.mywebserive/somewebservie&quot; binding=&quot;basicHttpBinding&quot; bindingConfiguration=&quot;DOC_TOI_Binding&quot; contract=&quot;ServiceReference1.DOC_TOI_PortType&quot; name=&quot;DOC_TOI_Port&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data 

這不右看看我!

UPDATE 2:溶液(種)

的問題是,所述響應產生了不同的命名空間比所使用的客戶端代理類。這樣該對象從未反序列化正確。有一次,我改變了命名空間以匹配它工作正常的響應命名空間。但是現在如果我更新Web服務引用,我將再次得到相同的問題,因爲命名空間將被更新。什麼是解決這個問題的好方法?我能想到的唯一解決方案是要求webservice的創建者使用正確的名稱空間。

+0

如果您可以聯繫Web服務的創建者,那麼這樣做,但要確保這是您的問題的正確解決方案。 – Bernard 2010-10-26 15:47:27

回答

2

它暗示我的WSDL或你的客戶端是不正確的。客戶端應該無法從WSDL中知道它實現的是哪種語言。請檢查您的名稱空間。

SOAP UI是測試SOAP服務的非常好的工具。我會推薦它來整理這個問題。

在我看來像是試圖逃脫那個片段的東西。你不想要&gt;你想要>

你需要確保服務和客戶端使用相同的命名空間。溝通是最重要的。

+0

非常感謝!我正在檢查Fiddler,它顯示響應被正確地發回,但由於某些原因,.NET無法處理響應,並且始終返回null。 – johndoe 2010-10-26 14:19:46

+0

請閱讀我的更新回覆!我在.NET項目中的一個svcinfo xml文件中發現了一些奇怪的代碼。 – johndoe 2010-10-26 14:25:40

4

使用.Net,我們可以使用服務參考或Web服務參考在我們的應用程序中添加java web服務。

服務參考 - 這是調用Microsoft WCF Web Services 3.5和更高版本的專用方式。 Web服務引用 - 引用非微軟的Web服務和Web服務微軟較低版本的方式,例如2.0

我們也可以使用非微軟網絡服務業務的參考,我們只需要修改的app.config一些配置如安全配置()

現在,當調用Web服務請求方法時,它總是以NULL對象響應結束。

樣品(這是由代理命名空間預期響應和實際的XML命名空間web服務響應之間的差異引起的): 代理代碼 [返回:System.Xml.Serialization.XmlElementAttribute(「的GetResponse 「命名空間=」 http://AJ_TUASON.COM「)]

公共的GetResponse獲取() {}

[系統。 Xml.Serialization。XmlTypeAttribute(AnonymousType =真,命名空間= 「http://AJ_TUASON.COM」)]

公共部分類的GetResponse {}

實際XML名稱空間響應

web服務:的GetResponse的xmlns :「http://AJTUASON.COM

要解決此問題,請安裝fiddler2。這將幫助您跟蹤並確認Web服務工作正常。

然後,從Web服務中複製XML響應中的實際名稱空間。

粘貼代理類.NET的實際XML命名空間響應:

樣品: [返回:System.Xml.Serialization.XmlElementAttribute( 「的GetResponse」,命名空間=「http://AJTUASON.COM 「)] 公共的GetResponse獲取() {}

[System.Xml.Serialization.XmlTypeAttribute(AnonymousType =真,命名空間=」 http://AJTUASON.COM「)] 公共部分類的GetResponse {}

這將解決Null問題。

注意:不要總是依靠生成代理類的工具。工具可以肯定地翻譯,但做分析是另一回事 - AJ

+0

我有類似的問題,我必須通過修復命名空間來解決它。 – Gomes 2013-05-10 13:36:07