Hi

- This issue appeared with version3 RC3 (I had no problem with RC1 and possibly 
RC2).
- I am sending a large file through HTTPClient. Since it is large, I avoid 
using buffering (stream
size is known, not equal to -1 or -2).
- When an error happen which involves the RetryHandler (derived from
DefaultHttpMethodRetryHandler), I used to reset the InputStream to position 
zero (either using
InputStream.mark(0) in the init phase then reset() or
((FileInputStream)stream).getChannel().position(0) in JDK 1.4). This way, the 
retry mechanism will
reuse a properly initialized stream from its beginning.

This used to work, however, with RC3, it seems from the source code that 
InputStreamRequestEntity
is not repeatable anymore (which I can understand in case a stream cannot be 
reset, but in many
case, may be most cases, it can be reset and reused).
This causes the "Unbuffered entity enclosing request can not be repeated" error 
and faisl the HTTP
call.

This is the java stacktrace:

org.apache.commons.httpclient.ProtocolException: Unbuffered entity enclosing 
request can not be
repeated.
        at
org.apache.commons.httpclient.methods.EntityEnclosingMethod.writeRequestBody(EntityEnclosingMethod.java:483)
        at 
org.apache.commons.httpclient.HttpMethodBase.writeRequest(HttpMethodBase.java:1973)
        at 
org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:993)
        at
org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:393)
        at
org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:168)
        at 
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
        at 
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)

I wanted to rely fully on the RetryHandler of the HTTPClient rather than add 
another layer of
retrying on top of it, which I would like to avoid.
Do you guys have a nice solution ?
I would suggest that you make a method in InputStreamRequestEntity to force it 
to be repeatable if
the developer knows he can reuse and reset the stream. Is that possible ?

Thanks
riad

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

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

Reply via email to