WCF客户端与Java WS交谈,异常:内容类型application / xop + xml;响应消息的type =“application / soap + xml”

时间:2013-07-26 11:00:40

标签: wcf soap wcf-binding mtom xop

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

我得到的例外情况如下:

内容类型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 for XOP包:W3C: XML-binary Optimized Packaging。摘自此链接:

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

如果我尝试使用工具“soapUI”(用Java编写,可从“www.soapui.org”获得)调用Web服务,则服务调用成功执行并且解析响应没有任何问题。

仅供参考,这是来自MSDN WCF forum的交叉帖子,但尚无回复。

感谢任何想法,提前谢谢,

亚历

2 个答案:

答案 0 :(得分:3)

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

<binding name="yourSoapBinding">
    <mtomMessageEncoding messageVersion="Soap12"/>
    <httpTransport />
</binding>

答案 1 :(得分:0)

尝试将绑定配置中的邮件编码设置为messageEncoding="Mtom"basicHTTPBinding,而不是wsHTTP一个...

希望它有所帮助!