hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Oleg Kalnichevski <ol...@apache.org>
Subject Re: redirect problem in HttpClient
Date Sat, 09 Oct 2004 10:26:21 GMT
Zulfi,
According to the log the request body does get written to the socket
output stream:

[DEBUG] wire - ->> "<SOAP-ENV:Envelope 
...
ello></SOAP-ENV:Body></SOAP-ENV:Envelope>"

So, really I do not think this has anything to do with HttpClient given
the data.

Do try out different settings: CONTENT_LENGTH_AUTO and
CONTENT_LENGTH_CHUNKED and see if that makes any difference. 

I suggest you try to reproduce the problem using a simple (or as simple
as possible) test case, something which I could also run locally on my
machine. I am afraid we will be unable to help you unless you manage to
narrow the problem down, at least somewhat

Cheers,

Oleg



On Sat, 2004-10-09 at 00:10, Zulfi Umrani wrote:
> Hi Oleg,
> I am setting the request body as InputStream, but I do set the
> Content-Length header as well. I do print out the bytes for body as
> string before I call executeMethod and I do see the body being printed
> even for the transaction in question. The InputStream for body is
> created out of those bytes. I have enabled full wire(header and content)
> + context logging by setting the following properties. Log is once again
> attahced for the transaction in question. Let me know if I have to set
> some other property as well.
> 
> System.setProperty("org.apache.commons.logging.Log",
> org.apache.commons.logging.impl.SimpleLog");
> System.setProperty("org.apache.commons.logging.simplelog.showdatetime",
> "true");
> System.setProperty("org.apache.commons.logging.simplelog.log.httpclient.wire",
> "debug");
> System.setProperty("org.apache.commons.logging.simplelog.log.org.apache.commons.httpclient",
> "debug");
> 
> 
> Thanks,
> Zulfi
> >>> olegk@apache.org 10/8/2004 1:25:07 PM >>>
> Zulfi,
> 
> My only guess is that this is a thread synchronization related
> problem,
> as the problem appears to be irregular. 
> 
> How do you set the request body? As an InputStream? How do you set the
> content length? Explicitly or as CONTENT_LENGTH_AUTO? Can it be that
> the
> input stream is exhausted before HttpClient has a chance to send its
> content across the wire?
> 
> Can you send me the context/wire log for the HTTP transaction in
> question?
> 
> Oleg
> 
> On Fri, 2004-10-08 at 22:10, Zulfi Umrani wrote:
> > Hi Oleg,
> > Yes, the connection is closed by the server. But it is closed
> because
> > the HttpClient did not send it the request BODY. The problem is that
> > occasionally HttpClient does not send the request as I described. For
> a
> > few times, it does send the request and then it just doesnt send it,
> but
> > only once. And then it is back to sending request body. The server
> tries
> > to read the body but can not, hence it closes the connection for the
> > reuqest which had no body and had Content-Length header value > 1. I
> > have sent you the reuqest in error from the tunnel. Looks like it
> sent
> > the Content-Length header, but not the body of the request. 
> > 
> > Hope this helps,
> > Zulfi
> > >>> olegk@apache.org 10/8/2004 12:46:04 PM >>>
> > Zulfi
> > 
> > HttpRecoverableException: "Software caused connection abort: recv
> > failed" usually means that the connection was closed on the server
> > side
> > while HttpClient was still reading the response. The is more likely
> to
> > be the server side problem. 
> > 
> > What exactly do you mean by "occasionally HttpClient does not send
> the
> > request body". Does it throw an exception, or blocks, or something
> > else?
> > 
> > Oleg
> >  
> > 
> > On Fri, 2004-10-08 at 19:53, Zulfi Umrani wrote:
> > > I am getting the following exception for redirect responses from
> > > HttpClient. Attached is the log from HttpClient. I know that
> > HttpClient
> > > does not support redirect directly, hence we have written some
> code
> > to
> > > handle that. The problem seems to be that, occasionally HttpClient
> > does
> > > not send the request body though it writes out the Content-Length
> > > header. If you send the same request one after another by starting
> a
> > new
> > > JVM for each request, such as running a client from commandline,
> you
> > > will see that, it sends the request body for a few times and then
> it
> > > does not send it once and then it starts to send it again. This
> > behavior
> > > keeps repeating. Below is the request sent out by HttpClient and
> > > response received by it, captured through a tunnel. I will
> appreciate
> > if
> > > someone can explain the behavior.
> > > 
> > > Exception in thread "main" java.rmi.RemoteException:
> > > java.net.SocketException: S
> > > oftware caused connection abort: recv failed; nested exception is:
> > >         org.apache.commons.httpclient.HttpRecoverableException:
> > > java.net.SocketE
> > > xception: Software caused connection abort: recv failed
> > >         at
> > >
> >
> com.sssw.jbroker.web.ServiceException.mapToRemote(ServiceException.ja
> > > va:92)
> > >         at
> > hello.HelloBinding_Stub.sayHello(HelloBinding_Stub.java:85)
> > >         at hello.Client.main(Client.java:25)
> > > Caused by: org.apache.commons.httpclient.HttpRecoverableException:
> > > java.net.Sock
> > > etException: Software caused connection abort: recv failed
> > >         at
> > >
> >
> org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodB
> > > ase.java:1965)
> > >         at
> > >
> >
> org.apache.commons.httpclient.HttpMethodBase.processRequest(HttpMetho
> > > dBase.java:2659)
> > >         at
> > >
> >
> org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.j
> > > ava:1093)
> > >         at
> > >
> >
> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.jav
> > > a:675)
> > >         at
> > >
> >
> org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.jav
> > > a:558)
> > > 
> > > Request going out from HttpClient:
> > > POST /services/hello HTTP/1.1 
> > > SOAPAction: "http://www.hello/sayHello"
> > > Content-Type: text/xml; charset=utf-8 
> > > Connection: keep-alive 
> > > User-Agent: Jakarta Commons-HttpClient/2.0final 
> > > Host: 840serv7:54892
> > > Content-Length: 421 
> > > 
> > > Response received by HttpClient:
> > > HTTP/1.1 307 redirected 
> > > Set-Cookie: dispatch-http-rt=840serv7:80; path=/; 
> > > Content-Length: 0 
> > > Location: http://840serv7:80/services/hello 
> > > 
> > > Thanks,
> > > Zulfi
> > > 
> > >
> >
> ______________________________________________________________________
> > >
> >
> ---------------------------------------------------------------------
> > > To unsubscribe, e-mail:
> > commons-httpclient-dev-unsubscribe@jakarta.apache.org 
> > > For additional commands, e-mail:
> > commons-httpclient-dev-help@jakarta.apache.org 
> > 
> > 
> >
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail:
> > commons-httpclient-dev-unsubscribe@jakarta.apache.org 
> > For additional commands, e-mail:
> > commons-httpclient-dev-help@jakarta.apache.org 
> > 
> > 
> >
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail:
> commons-httpclient-dev-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail:
> commons-httpclient-dev-help@jakarta.apache.org
> > 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:
> commons-httpclient-dev-unsubscribe@jakarta.apache.org 
> For additional commands, e-mail:
> commons-httpclient-dev-help@jakarta.apache.org 
> 
> 
> ______________________________________________________________________
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-httpclient-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-httpclient-dev-help@jakarta.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commons-httpclient-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-httpclient-dev-help@jakarta.apache.org


Mime
View raw message