我在与 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 论坛的交叉帖子。但还没有回复。
任何想法表示赞赏,在此先感谢,
亚历克斯