4

我有一个 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 不支持二进制编码,并且在发现之后我有点卡住了。

我想知道是否有解决此问题的方法。因此,无论有人设法使用 groovy 脚本、插件、库还是其他东西来在 SOAP UI PRO 中集成二进制编码。

任何帮助是极大的赞赏。

4

2 回答 2

3

application/soap+msbin1 是 WCF 的二进制编码。您正在发送带有文本编码的请求。这就是服务器端给出的原因:Bad request

据我所知,SoapUI 不支持 application/soap+msbin1 编码,也没有可用的插件。

如果您需要使用 SoapUI 测试服务,您有 2 个选项:

  1. 将服务(服务器端)绑定更改为文本编码(通过web.config中的配置)。请注意,一个服务可以有多个绑定,您可以使用文本编码测试绑定,而 WCF 客户端可以使用二进制 (application/soap+msbin1) 编码。无论如何都需要文本编码来实现与非 WCF 客户端(例如 SoapUI)的互操作性。您可以查看Microsoft 文档了解更多信息。

  2. 将您的soap 请求编码为二进制数据并将其作为HTTP PUT 请求发送。当然,您还需要对服务响应进行解码才能理解它。这可能是一次性测试的一种方式,否则太麻烦了。您可以使用 Groovy 脚本即时执行二进制编码/解码,以防您需要进行许多测试,但需要进行一些编程。

我绝对推荐第一个选项。

卡雷尔

于 2017-03-01T11:44:43.440 回答
0

什么对我有用

创建自定义绑定并确保使用

**<binaryMessageEncoding />**

<bindings>
  <customBinding>
    <binding name="MyCustomBinding">
       <binaryMessageEncoding />
    </binding>

并在您的端点中引用它。

 <endpoint address="https://..." binding="customBinding" bindingConfiguration="MyCustomBinding" contract="..." name="..." />
于 2021-03-07T02:44:07.093 回答