当前位置: 首页 > 知识库问答 >
问题:

WCF客户端与Java WS对话,异常:内容类型Application/XOP+XML;响应消息的type=“application/soap+xml”

谢叶五
2023-03-14

我在与Java WS对话时遇到了问题。我使用“WSHTTPBinding”绑定客户端证书进行身份验证,消息编码设置为“text”,.NET framework为4.0。服务器端是Java,我无法控制它。连接是通过Fiddler代理的(这就是我在网上看到请求的方式,比跟踪“System.NET”更加用户友好)。

我得到的例外情况如下:

服务器接受请求的“text”和“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服务,服务调用将成功执行,响应将毫无问题地解析。

亚历克斯

共有1个答案

丌官炎彬
2023-03-14

我也在使用CXF,并且有一个C#客户端。尝试修改绑定设置,将TextMessageEncoding替换为MtomMessageEncoding。类似于这样:

<binding name="yourSoapBinding">
    <mtomMessageEncoding messageVersion="Soap12"/>
    <httpTransport />
</binding>
 类似资料: