I am sending a SOAP message from a webservice client (code was generated by IBM RAD 7.5) to a host, and it with a webservice fault and a message that in the hosts' log reads as "content not allowed in prolog". When I send the same content with SoapUI or a simple apache HttpClient test client, the message is received and processed by the host, and I get the expected response.
As far as I can tell, the difference is in the HTTP headers that are being sent.
RAD-generated client:
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--
For 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...
And a very simple client implemented using 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
As far as I can tell, the difference between these three is that the request generated by by the RAD-generated client has a content-type "multipart" and defines a MIME boundary. I don't have access to the host system but it seems that the host is not able to handle multipart messages.
Is there a way to force the IBM client code to send the message as simply as SoapUI or the HttpClient?