HttpClient 4 :

Response of first multipart post request is :

[org.apache.http.impl.conn.DefaultClientConnection] Receiving response: 
HTTP/1.1 200 
[org.apache.http.headers] << HTTP/1.1 200 
[org.apache.http.headers] << Date: Tue, 12 Jan 2010 16:01:47 GMT
[org.apache.http.headers] << Content-type: text/html; charset=utf-8
[org.apache.http.headers] << Content-length: 199
[org.apache.http.headers] << Last-modified: Tue, 12 Jan 2010 16:01:47 GMT
[org.apache.http.headers] << Pragma: no-cache
[org.apache.http.headers] << Expires: 0
[org.apache.http.headers] << Cache-Control: no-cache
[org.apache.http.impl.client.DefaultHttpClient] Connection can be kept alive 
indefinitely
[org.apache.http.wire] << "<html><head><script>[\n]"
[org.apache.http.wire] << "function color(s) { if (s) document.bgColor=s }[\n]"
[org.apache.http.wire] << "var errno=27[\n]"
[org.apache.http.wire] << "var errstr='File too large'[\n]"
[org.apache.http.wire] << "var size=1253000[\n]"
[org.apache.http.wire] << "var uid=0[\n]"
[org.apache.http.wire] << "if (parent.attachCB) parent.attachCB()[\n]"
[org.apache.http.wire] << "</script>[\n]"
[org.apache.http.wire] << "</head>[\n]"
[org.apache.http.wire] << "</html>[\n]"

[org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager] Released 
connection is reusable.

Immediate next multipart post request gives following exception: ( for get 
request: org.apache.http.NoHttpResponseException: The target server failed to 
respond  ------> Request is not reaching server)

java.net.SocketException: Software caused connection abort: socket write error
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
        at 
org.apache.http.impl.io.AbstractSessionOutputBuffer.flushBuffer(AbstractSessionOutputBuffer.java:106)
        at 
org.apache.http.impl.io.AbstractSessionOutputBuffer.flush(AbstractSessionOutputBuffer.java:113)
        at 
org.apache.http.impl.conn.LoggingSessionOutputBuffer.flush(LoggingSessionOutputBuffer.java:85)
        at 
org.apache.http.impl.AbstractHttpClientConnection.doFlush(AbstractHttpClientConnection.java:260)
        at 
org.apache.http.impl.SocketHttpClientConnection.close(SocketHttpClientConnection.java:248)
        at 
org.apache.http.impl.conn.DefaultClientConnection.close(DefaultClientConnection.java:154)
        at 
org.apache.http.impl.conn.AbstractPooledConnAdapter.close(AbstractPooledConnAdapter.java:148)
        at 
org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:130)
        at 
org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:483)
        at 
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
        at 
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:597)

and 
 [org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager] Released 
connection is not reusable.

This happens only when server gives error message. For small attachment there 
is no issue.
Verified Content-length header value and  total bytes in response, both are 
same. 

Is there any use case where connection may be corrupted because of first 
request and use of same connection for next request gives undesired results.

No issues with httpclient 3.x for same requests.

--Prasad


      

Reply via email to