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

Reply via email to