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] > > >
