我正在从 Web 服务客户端(代码由 IBM RAD 7.5 生成)向主机发送一条 SOAP 消息,该消息带有一个 Web 服务故障以及一条在主机日志中显示为“序言中不允许的内容”的消息。当我使用 SoapUI 或简单的 apache HttpClient 测试客户端发送相同的内容时,主机会接收并处理该消息,并且我会得到预期的响应。
据我所知,区别在于发送的 HTTP 标头。
RAD 生成的客户端:
POST /ws/mycompany/webservice/SomeWebServiceName/soap11 HTTP/1.1
Host: http://host.com/ws/mycompany/webservice/SomeWebServiceName/soap11
Accept: application/soap+xml,multipart/related,text/*
User-Agent: IBM WebServices/1.0
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: ""
Connection: Keep-Alive
SAVECONNECTION: 7814631881345232300226
IBM-WAS-CLIENT: TRUE
Content-Type: multipart/related; boundary=MIMEBoundaryurn_uuid_E54EE0B5F8ED486B811345232300773; type="application/xop+xml"; start=""; start-info="text/xml"
Content-Length: 2553
Date: Fri, 17 Aug 2012 19:38:20 GMT
--MIMEBoundaryurn_uuid_E54EE0B5F8ED486B811345232300773
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml"
Content-Transfer-Encoding: binary
Content-ID:
<soapenv:Envelope...
--MIMEBoundaryurn_uuid_E54EE0B5F8ED486B811345232300773--
对于 SoapUI:
POST /ws/mycompany/webservice/SomeWebServiceName/soap11 HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
Content-Length: 2732
Host: localhost:9111
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
<soapenv:Envelope...
以及使用 apache HttpClient 实现的一个非常简单的客户端:
POST /ws/mycompany/webservice/SomeWebServiceName/soap11 HTTP/1.1
User-Agent: Jakarta Commons-HttpClient/3.1
Transfer-Encoding: chunked
Host: localhost:9111
8da
<soapenv:Envelope...
0
据我所知,这三者之间的区别在于 RAD 生成的客户端生成的请求具有内容类型“multipart”并定义了 MIME 边界。我无权访问主机系统,但主机似乎无法处理多部分消息。
有没有办法强制 IBM 客户端代码像 SoapUI 或 HttpClient 一样简单地发送消息?