简体   繁体   中英

While sending heavy json almost 5MB it will give me java.net.SocketException: Connection reset by peer: socket write error

would like to post a huge JSON object, but when i try i got this error:

java.net.SocketException: Connection reset by peer: socket write error
 at java.net.SocketOutputStream.socketWrite0(Native Method)
 at java.net.SocketOutputStream.socketWrite(Unknown Source)
 at java.net.SocketOutputStream.write(Unknown Source)
 at org.apache.http.impl.io.SessionOutputBufferImpl.streamWrite(SessionOutputBufferImpl.java:126)
 at org.apache.http.impl.io.SessionOutputBufferImpl.write(SessionOutputBufferImpl.java:162)
 at org.apache.http.impl.io.ContentLengthOutputStream.write(ContentLengthOutputStream.java:115)
 at org.apache.http.impl.io.ContentLengthOutputStream.write(ContentLengthOutputStream.java:122)
 at org.apache.http.entity.StringEntity.writeTo(StringEntity.java:169)
 at org.apache.http.impl.DefaultBHttpClientConnection.sendRequestEntity(DefaultBHttpClientConnection.java:158)
 at org.apache.http.impl.conn.CPoolProxy.sendRequestEntity(CPoolProxy.java:162)
 at org.apache.http.protocol.HttpRequestExecutor.doSendRequest(HttpRequestExecutor.java:237)
 at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:122)
 at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:271)
 at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
 at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:88)
 at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
 at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
 at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
 at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107)
 at com.os.util.helper.microServiceHelper.AbstractMicroServiceHelper.getResultFromMicroServices(AbstractMicroServiceHelper.java:196)
 at com.os.util.helper.microServiceHelper.IsheetVersionMicroserviceImpl.bulkInsertUpdateIsheetVersion(IsheetVersionMicroserviceImpl.java:75)
 at com.os.gfnactions.isheet.IsheetVersionPutInMicroserviceThread.run(IsheetVersionPutInMicroserviceThread.java:36)
 at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
 at java.util.concurrent.FutureTask.run(Unknown Source)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
 at java.lang.Thread.run(Unknown Source)

Socket Exception

When I am sending a large heavy json through HttpClient Post request it will give me a below error.

so how to solve below error i was study all posted question.but doesn't get a proper solution for my error.

FYI : Basically we are use spring boot api at server side. we are call that api from a application which is in java.

can you please anyone help me solve below error??

1) How to send from client side in java ?

2) How to get server side that json in java ?

You should try increase socket timeout by typing socket.setSoTimeout(number)

Documentation: https://docs.oracle.com/javase/7/docs/api/java/net/Socket.html#setSoTimeout(int)

Posting huge text it's not good idea. You should apply some pagination for this and split eg. every 200kb.

For big json files I recommend BSON http://bsonspec.org/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM