Hi, I am using Axis 1.2 (final) with the Commons HTTPClient 3.0rc2. I am using these libraries to create a SOAP client using the SAAJ API. My client connects to a .net webservice. It must query for data several times per minute, so I am trying to get HTTP/1.1 keepalive support working.
I think I have found a bug in org.apache.axis.transport.http.CommonsHTTPSender. When I set the SOAPAction MIME header, the "SOAPAction" gets written to the http headers two times. The .net server cannot deal with this. My client code has always worked fine in the past when using the Sun SAAJ implementation and when using the standard Axis HttpSender. This problem only showed up when I switched to using the CommonsHTTPSender. For reference, my client code sets the SOAPAction in a SOAPMessage like this: soapMsg.getMimeHeaders().setHeader("SOAPAction", "someaction"); To me, it looks like the CommonsHTTPSender is missing some logic which can be found in HttpSender. Here is a patch which fixes the problem. 477a478,482 > String headerName = mimeHeader.getName(); > if (headerName.equals(HTTPConstants.HEADER_CONTENT_TYPE) || > headerName.equals(HTTPConstants.HEADER_SOAP_ACTION)) { > continue; > } I hope this is helpful. This has been dogging me all day! noky