【问题标题】:Content-Type application/soap+msbin1 in SOAP UI / SOAP UI PROSOAP UI / SOAP UI PRO 中的 Content-Type application/soap+msbin1
【发布时间】:2017-02-27 10:42:49
【问题描述】:

我有一个 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 错误请求

我了解到 Binary-Encoding 在 SOAP UI / SOAP UI PRO / READY API 中不受支持,并且在这个发现之后我有点卡住了。

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

非常感谢任何帮助。

【问题讨论】:

  • 如果你使用 Chorme 的扩展 POSTMAN 尝试相同,结果如何?
  • @Rao - 完全一样...
  • 希望您发送正确的请求。
  • 是的,请求是正确的,内容类型是这里的问题。
  • 您是否在抛出 400 错误时检查过应用程序日志?您也可以检查相同的正确值。

标签: web-services api wcf soapui web-api-testing


【解决方案1】:

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

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

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

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

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

我绝对推荐第一个选项。

卡雷尔

【讨论】:

    【解决方案2】:

    什么对我有用

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

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

    并在您的端点中引用它。

     <endpoint address="https://..." binding="customBinding" bindingConfiguration="MyCustomBinding" contract="..." name="..." />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-02
      • 1970-01-01
      • 2013-08-05
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多