On Fri, 2005-11-04 at 12:06 -0700, Derek Sweet wrote:
> What do we do with the buffer if we want the response as a string after
> that?

Convert it to a string

>  Can we just make a call to getResponseBodyAsString() after the routine
> has run through and we know that we've received the whole response in time?

You can, but it will return an empty string because the content has
already been consumed

> I'm assuming there is nothing wrong with dynamically defining the timeout,
> correct?
> 

There's nothing wrong with it, save the fact it will not work. This is
known limitation of the existing API

Oleg

> Derek 
> 
> -----Original Message-----
> From: Oleg Kalnichevski [mailto:[EMAIL PROTECTED] 
> Sent: Friday, November 04, 2005 10:20 AM
> To: [email protected]
> Cc: Guy With Question
> Subject: Re: Http timeout and 100 Continue
> 
> On Fri, Nov 04, 2005 at 08:52:17AM -0800, Guy With Question wrote:
> > Oleg,
> >  
> > What I want to do is unblock if I don't have the entire response in x
> seconds, where x = time needed to connect to the server plus the time needed
> to recieve the entire response. Can you please suggest a way to do this? Can
> you show me with an example?
> >  
> > Thanks in advance.
> 
> final int SOCKET_TIMEOUT = 1000;
> final int TOTAL_TIMEOUT = 5000;
> 
> HttpClient httpclient = new HttpClient(); GetMethod httpget = new
> GetMethod("/data"); httpget.getParams().setSoTimeout(SOCKET_TIMEOUT);
> try {
>     httpclient.executeMethod(httpget);
>     InputStream instream = httpget.getResponseBodyAsStream();
>     int l;
>     byte[] buffer = new byte[1024];
>     long start = System.currentTimeMillis();
>     while ((l = instream.read(buffer)) != -1) {
>         long time = System.currentTimeMillis() - start;
>         if (time > TOTAL_TIMEOUT) {
>             throw new OppsieException(); 
>         }
>         // do stuff
>     }
> } finally {
>     httpget.releaseConnection();
> }
> 
> The worst case is TOTAL_TIMEOUT - 1 + SOCKET_TIMEOUT 
> 
> Hope this helps
> 
> Oleg
> 
> 
> > 
> > Oleg Kalnichevski <[EMAIL PROTECTED]> wrote:
> > On Thu, Nov 03, 2005 at 02:01:14PM -0800, Guy With Question wrote:
> > > Thanks for the clarification.
> > > 
> > > So I guess when I am setting connection timeout = 10, what I'm really
> doing is setting timeout for the Connection Socket.
> > > 
> > > What I want to do is set timeout for the data Socket as well. If I don't
> have the complete response within a time period, say 8 seconds (assuming
> connection timeout is 2 seconds), then I want my client to stop blocking.
> > > 
> > 
> > Not quite. If you set the socket timeout to, say, 10 sec, and there's 
> > a packet coming every 9 secs, the connection will never time out. The 
> > socket timeout only ensures that if there's no data coming FOR 10 sec, 
> > the socket will stop blocking.
> > 
> > Hope this helps
> > 
> > Oleg
> > PS: in the future please post your questions to the mailing list
> > 
> > 
> > > Regards.
> > > 
> > > 
> > > 
> > > 
> > > 
> > > On Thu, 2005-11-03 at 11:47 -0800, Guy With Question wrote:
> > > > Hello,
> > > > 
> > > > Background:
> > > > I am using HttpClient 3.0 rc4. I am trying to connect to an IIS 
> > > > server using SSL. I need to POST data to that server. My 
> > > > connection timeout is set to 10 seconds. When execute method runs, 
> > > > the first response I get is 100 Continue which is almost 
> > > > immediate, but the HTTP content comes back much after 10 seconds.
> > > > 
> > > > Question:
> > > > I am not sure if HttpClient is using a second connection in the 
> > > > execute method for sending the actual POST data.
> > > 
> > > HttpClient does not use a second connection to execute POST requests
> > > 
> > > > 1. If the client uses the same connection to POST data, then will 
> > > > the timeout value NOT matter anymore since the client has already 
> > > > recieved 100 Continue immediately?
> > > 
> > > The socket timeout defines the maximum period of inactivity between 
> > > two consecutive incoming IP packets, or in other words the maximum 
> > > period of time the socket can be blocked in a read operation
> > > 
> > > The connection timeout defines how long the socket can be blocked 
> > > waiting until the socket is ready to send and receive data. It has 
> > > no effect on read / write operations
> > > 
> > > > 2. If it uses another connection, then will that connection also 
> > > > have a connection timeout of 10 seconds. If yes, then why is it 
> > > > taking longer than 10 seconds to get my response?
> > > 
> > > See above
> > > 
> > > > 3. If I want to set the connection timeout = 10 seconds from the 
> > > > time the first request is made to the time I get a final response, 
> > > > what do I have to do?
> > > 
> > > It all depends what you mean by the connection timeout. The maximum 
> > > time until the response is received in its entirety?
> > > 
> > > Hope this helps
> > > 
> > > Oleg
> > > 
> > > > 
> > > > Code:
> > > > 
> > > > HttpClient httpClient = new HttpClient(new 
> > > > SimpleHttpConnectionManager());
> > > > 
> > > > Integer timeout = new Integer(10*1000);
> > > > 
> > > > 
> > > > 
> > > > httpClient.getHttpConnectionManager().getParams().setParameter("ht
> > > > tp.connection.timeout",
> > > > timeout);
> > > > 
> > > > httpPostMethod.setRequestBody(data);
> > > > 
> > > > int statusCode = httpClient.executeMethod(httpPostMethod);
> > > > 
> > > > 
> > > > 
> > > > Thanks in advance!
> > > 
> > > 
> > > 
> > > 
> > > ---------------------------------
> > > Yahoo! FareChase - Search multiple travel sites in one click. 
> > 
> >             
> > ---------------------------------
> >  Yahoo! FareChase - Search multiple travel sites in one click.  
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to