我在inSecuence中有一个肥皂来休息转换,为了测试我使用soap-ui作为cliente和一个用eclipse和axis在本地开发的servlet。到目前为止一切顺利,一切正常。
但是......当我将http端点更改为真正的servlet时,我得到了响应为二进制
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<axis2ns1073:binary xmlns:axis2ns1073="...">T0z=</axis2ns1073:binary>
</soapenv:Body>
</soapenv:Envelope>
当我用任何浏览器(例如Firefox)使用相同的URL调用servlet时,我得到“NOK”
这意味着:
我使用tcpmon来查看mock的响应和真实servlet的响应之间的差异。主要区别在于真正的servlet使用传输编码进行响应:chunked
¿我能做些什么来正确对待反应?
答案 0 :(得分:1)
您的servlet在响应中是否有“Content-Type”标头?
正如我在附件中看到的那样,Content-Type标头丢失了。当响应中缺少Content-Type标头时,ESB将Content-Type假定为二进制并将响应解析为二进制。
因此,为了解决您的问题,请更新您的servlet以在响应中包含Content-Type标头,并使用正确的Content-Type,例如:text / plain并再次尝试调用。它应该工作。
如果您无法更改servlet,则需要在缺少Content Type标头时将ESB配置为使用默认的Content Type。您可以在http://charithaka.blogspot.sg/2014/07/how-to-enforce-default-http-content.html
中找到有关如何操作的详细信息希望这有帮助!
谢谢和问候,
Harshana