2013-07-26 65 views
5

我在與Java WS聊天時遇到問題。我使用「wsHttpBinding」綁定與客戶端證書進行身份驗證,消息編碼設置爲「Text」,.net framework爲4.0。服務器端是Java,我無法控制它。連接通過Fiddler進行代理(這是我在線路上看到的請求,比追蹤「System.Net」更方便用戶)。WCF客戶端與Java WS聊天,異常:內容類型application/xop + xml;響應消息的類型=「application/soap + xml」

異常我得到的是以下內容:

內容類型application/XOP + xml的;響應消息的type =「application/soap + xml」與綁定的內容類型(application/soap + xml; charset = utf-8)不匹配。

如果更改消息編碼爲 「MTOM」,則異常的變化:

內容類型application/XOP + xml的;響應消息的type =「application/soap + xml」與綁定的內容類型(multipart/related; type =「application/xop + xml」)不匹配。

服務器正在接受請求的「文本」和「Mtom」消息編碼,並且響應始終是相同的。這是我從服務器獲取原始響應:

HTTP/1.1 200 OK 
X-Backside-Transport: OK OK 
Connection: Keep-Alive 
X-Powered-By: Servlet/3.0 
SOAPAction: "" 
Content-Type: application/xop+xml; type="application/soap+xml" 
Content-Language: en-US 
Date: Thu, 25 Jul 2013 13:05:09 GMT 
Content-Length: 628 

<?xml version="1.0" encoding="UTF-8"?> 
<env:Envelope ... </env:Envelope> 

從中我一直在閱讀的所有文檔,正被返回是介於正常的SOAP消息和MTOM消息之間的響應。我這樣說是因爲我見過的每個示例都說MTOM請求和響應使用MIME作爲通信的信封:常規SOAP消息被封裝在XOP包中,然後這個XOP消息被MIME封裝。即使W3C建議使用MIME作爲XOP包:W3C: XML-binary Optimized Packaging。從這個鏈接摘錄:

Content-Type: Multipart/Related;boundary=... 

如果我嘗試使用工具「的soapUI」(用Java編寫的,可從「www.soapui.org」),成功地執行服務調用和響應,沒有任何解析調用Web服務問題。

僅供參考,這是一個來自MSDN WCF forum的交叉帖子,但沒有迴應。

任何想法表示讚賞,謝謝提前,

亞歷

+0

我面臨着完全相同的問題。創建一個自定義綁定並設置messageVersion =「Soap12」不適合我。我可以看到的一個區別是我的Web服務調用是https,但是這個帖子似乎是用於http的。 –

+0

您是否找到解決方案?我有同樣的問題。但是在第一個答案中建議的綁定配置對於web.config無效。 –

+0

HTTP與HTTPS沒有什麼區別:這只是傳輸細節。問題在於消息的格式。我遇到的問題是政府實體正在使用某個Java服務器(使用IBM WebSphere堆棧),而他們的堆棧正在生成不合規的消息。在我的例子中有兩個選項:1.)使用SoapUI作爲外部應用程序,它將下載消息,然後在C#2中解析XML。)編輯通過網絡傳輸的原始XML並更改消息XML以符合標準 - > this方式一切都是用C#完成的。 – alemarko

回答

0

嘗試在綁定配置的郵件編碼設置爲messageEncoding="Mtom"basicHTTPBinding而不是wsHTTP一個...

希望它能幫助!

2

我也使用CXF,並有一個C#客戶端。嘗試修改您的綁定設置,將textMessageEncoding替換爲mtomMessageEncoding。類似這樣的:

<binding name="yourSoapBinding"> 
    <mtomMessageEncoding messageVersion="Soap12"/> 
    <httpTransport /> 
</binding> 
相關問題