The difference, Uday, is that HttpClient supports it internally.  You
don't have to do anything to make it work.  Just do a normal PUT
request with a body (and specify to use EXPECT_CONTINUE, as David
shows), and HttpClient will automagically make it work.  I think
you're trying to do it yourself, which is causing problems.  As Oleg
mentioned, httpclient performs the expect-continue internally, so a
1xx response should never be seen by the user in normal program flow.

Sam

On Fri, Jul 18, 2008 at 12:00 AM, Uday Subbarayan
<[EMAIL PROTECTED]> wrote:
> Hi Oleg,
>     I disagree with you. This 100 status from HTTP Servers are valid 
> response, to indicate to the client to continue sending the body.
>
> The HTTP 1.1 spec says,
>
> "This interim response is
>   used to inform the client that the initial part of the request has
>   been received and has not yet been rejected by the server. The client
>   SHOULD continue by sending the remainder of the request or, if the
>   request has already been completed, ignore this response. The server
>   MUST send a final response after the request has been completed."
>
> http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.1.1
>
> A good example is Amzon's S3:
> http://docs.amazonwebservices.com/AmazonS3/2006-03-01/
>
> Here client will send the header first and S3 authenticates request based on 
> header. Then if auth succeeds it will respond with 100 to indicate to the 
> client to continue with the body OR 417 OT to send the body.
>
> So,
>    Is it safe to assume that Apache's HTTPClient is NOT supporting this 
> "Expect:100-Continue" header in HTTP1.1?
>
> Thanks,
> -Uday.
> -------------------------
>
> I do not blog but e-write:
>
> http://uds-web.blogspot.com
>
> --- On Thu, 7/17/08, Oleg Kalnichevski <[EMAIL PROTECTED]> wrote:
> From: Oleg Kalnichevski <[EMAIL PROTECTED]>
> Subject: Re: PUT & Expect:100-continue
> To: "HttpClient User Discussion" <[email protected]>
> Date: Thursday, July 17, 2008, 10:03 PM
>
> On Wed, 2008-07-16 at 17:34 -0700, Uday Subbarayan wrote:
>> Hi All,
>>     I am having trouble in using HTTPClient 3.1 for PUT method w/
> "Expect:100-Continue" header.
>>
>> My requirement is that,
>> [1] client sends a PUT request to the server with header only using this
> Expect header and waits for the 100 response back from the server.
>> [2] Then client sends the body, after it received the 100 status back from
> the server.
>>
>> The problem is that if my server sends back 100-continue, HttpClient
> complaints about,
>> "INFO: Discarding unexpected response: HTTP/1.1 100 Continue".
>>
>> Here is sample code:
>>           String testURL="http://localhost:8080/testci/index";;
>>           HttpClient client = new HttpClient();
>>
>>           PutMethod put = new PutMethod(url);
>>           put.setUseExpectHeader(true);
>>           int statusCode = client.executeMethod(put);
>>
>>
>>           if(statusCode==100){
>>               System.out.println("server response is 100!");
>>               put.setRequestBody(new
> FileInputStream("test.txt"));
>>           }
>> ----------------------------
>>
>> It looks like i am making some mistake.... Can some one shed some light
> here?
>>
>
> Uday,
>
> HTTP agents are not supposed to return 1xx status codes to the caller.
> These are special purpose codes that are meant to be used internally
> Just let HttpClient handle the expect-continue handshaking.
>
> http://hc.apache.org/httpclient-3.x/performance.html#Expect-continue_handshake
>
> You can see exactly what gets transferred across the wire by turning on
> the wire logging on the client side.
>
> http://hc.apache.org/httpclient-3.x/logging.html
>
> Hope this helps
>
> Oleg
>
>
>> Thanks,
>> -Uday.
>>
>> -------------------------
>>
>> I do not blog but e-write:
>>
>> http://uds-web.blogspot.com
>>
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>

Reply via email to