6

我在与 Java WS 交谈时遇到问题。我使用“wsHttpBinding”绑定客户端证书进行身份验证,消息编码设置为“文本”,.net 框架为 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 用于 XOP 包:W3C: XML-binary Optimized Packaging。此链接的摘录:

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

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

仅供参考,这是来自MSDN WCF 论坛的交叉帖子。但还没有回复。

任何想法表示赞赏,在此先感谢,

亚历克斯

4

2 回答 2

3

我也在使用 CXF,并且有一个 C# 客户端。尝试修改您的绑定设置,替换textMessageEncodingmtomMessageEncoding. 像这样的东西:

<binding name="yourSoapBinding">
    <mtomMessageEncoding messageVersion="Soap12"/>
    <httpTransport />
</binding>
于 2015-08-04T05:15:19.243 回答
0

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

希望能帮助到你!

于 2013-09-08T19:29:28.697 回答