On Tue, 2008-04-29 at 16:22 -0400, Francesco Lazzarino wrote: > # scenario: > PUTting a large file to a URL. > server reads Content-Length header and determines the file is to large. > server sends a 413 response. > server closes connection. > > # my problem: > Since it is a large file the entity is not completely buffered, the > server closes the connection before HttpClient completes the request > transmission. I implemented a HttpMethodRetryHandler to handle this > but method.getStatusCode() throws a NullPointerException. I want to be > able to read the response in order to determine what happened. Any > ideas? >
Francesco, This is a generic problem with classic (blocking) I/O in Java. There is simply no easy way of testing for pending input data while streaming data out using blocking I/O. The only feasible solution to this issue is the use of non-blocking I/O, which has issues of its own. Oleg > # log output of a 500MB PUT (no response seems to be given) > 2008/04/29 16:00:38:910 EDT [DEBUG] HttpConnection - Open connection > to localhost:9009 > 2008/04/29 16:00:38:924 EDT [DEBUG] header - >> "PUT /foo HTTP/1.1[\r] > [\n]" > 2008/04/29 16:00:38:925 EDT [DEBUG] HttpMethodBase - Adding Host > request header > 2008/04/29 16:00:42:894 EDT [DEBUG] header - >> "User-Agent: Jakarta > Commons-HttpClient/3.1[\r][\n]" > 2008/04/29 16:00:42:894 EDT [DEBUG] header - >> "Host: localhost: > 9009[\r][\n]" > 2008/04/29 16:00:42:894 EDT [DEBUG] header - >> "Content-Length: > 472870912[\r][\n]" > 2008/04/29 16:00:42:894 EDT [DEBUG] header - >> "[\r][\n]" > 2008/04/29 16:00:42:895 EDT [DEBUG] HttpMethodDirector - Closing the > connection. > 2008/04/29 16:00:42:896 EDT [DEBUG] HttpConnection - Releasing > connection back to connection manager. > > # log output of a 1k PUT (the response is read) > 2008/04/29 16:20:58:945 EDT [DEBUG] HttpConnection - Open connection > to localhost:9009 > 2008/04/29 16:20:58:959 EDT [DEBUG] header - >> "PUT /foo HTTP/1.1[\r] > [\n]" > 2008/04/29 16:20:58:960 EDT [DEBUG] HttpMethodBase - Adding Host > request header > 2008/04/29 16:20:58:973 EDT [DEBUG] header - >> "User-Agent: Jakarta > Commons-HttpClient/3.1[\r][\n]" > 2008/04/29 16:20:58:973 EDT [DEBUG] header - >> "Host: localhost: > 9009[\r][\n]" > 2008/04/29 16:20:58:974 EDT [DEBUG] header - >> "Content-Length: > 1024[\r][\n]" > 2008/04/29 16:20:58:974 EDT [DEBUG] header - >> "[\r][\n]" > 2008/04/29 16:20:58:974 EDT [DEBUG] EntityEnclosingMethod - Request > body sent > 2008/04/29 16:20:58:975 EDT [DEBUG] header - << " HTTP/1.1 413 Too > Big[\n]" > 2008/04/29 16:20:58:975 EDT [DEBUG] header - << " HTTP/1.1 413 Too > Big[\r][\n]" > 2008/04/29 16:20:58:976 EDT [DEBUG] header - << " Content-Type: > none[\n]" > 2008/04/29 16:20:58:976 EDT [INFO] HttpMethodBase - Response content > length is not known > 2008/04/29 16:20:58:976 EDT [DEBUG] HttpMethodBase - Force-close > connection: true > > thanks in advance, > -franco > > Francesco Lazzarino > Florida Digital Archive Programmer > [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]
