我在与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的交叉帖子,但尚无回复。
感谢任何想法,提前谢谢,
亚历
答案 0 :(得分:3)
我也在使用CXF,并且有一个C#客户端。尝试修改绑定设置,将textMessageEncoding
替换为mtomMessageEncoding
。像这样:
<binding name="yourSoapBinding">
<mtomMessageEncoding messageVersion="Soap12"/>
<httpTransport />
</binding>
答案 1 :(得分:0)
尝试将绑定配置中的邮件编码设置为messageEncoding="Mtom"
和basicHTTPBinding
,而不是wsHTTP
一个...
希望它有所帮助!