我有一个WCF服务,我正在尝试将它与SOAP UI PRO一起使用。在第一次执行时,我收到了以下响应:
HTTP / 1.1 415无法处理邮件,因为内容类型' application / soap + xml; charset = UTF-8;'不是预期的类型' application / soap + msbin1'。
我发现我应该添加 Content-Type 标头,我这样做了(即 Content-Type application / soap + msbin1 )。但是,错误现在演变为:
HTTP / 1.1 400错误请求
我了解到SOAP UI / SOAP UI PRO / READY API中不支持 Binary-Encoding ,而且在发现之后我有点卡住了。
我想知道这个问题是否有解决方法。因此,是否有人设法使用groovy脚本,插件,库或其他不同的东西来在SOAP UI PRO中集成二进制编码。
非常感谢任何帮助。
答案 0 :(得分:3)
application / soap + msbin1是WCF的二进制编码。您正在使用文本编码发送请求。这就是服务器端提供:错误请求。
的原因据我所知,SoapUI不支持application / soap + msbin1编码,也没有可用的插件。
如果您需要使用SoapUI测试服务,您有两个选择:
将服务(服务器端)绑定更改为文本编码(通过 web.config 中的配置)。请注意,服务可以有多个绑定,您可以使用文本编码测试绑定,而WCF客户端可以使用二进制(application / soap + msbin1)编码。无论如何,文本编码都需要实现与非WCF客户端(例如SoapUI)的互操作性。您可以查看Microsoft documentation了解更多信息。
将您的soap请求编码为二进制数据,并将其作为HTTP PUT请求发送。当然,您还需要解码服务响应才能理解它。这可能是一次性测试的一种方式,否则它太麻烦了。您可以使用Groovy脚本动态进行二进制编码/解码,以防您需要进行多次测试,但需要进行一些编程。
我绝对推荐第一个选项。
卡雷尔
答案 1 :(得分:0)
什么对我有用
创建自定义绑定并确保使用
**<binaryMessageEncoding />**
<bindings>
<customBinding>
<binding name="MyCustomBinding">
<binaryMessageEncoding />
</binding>
并在您的端点中引用它。
<endpoint address="https://..." binding="customBinding" bindingConfiguration="MyCustomBinding" contract="..." name="..." />