修改文件上载套接字超时和异常

时间:2016-08-01 05:27:12

标签: android retrofit okhttp socket-timeout-exception

在我的Android应用程序中,当我想上传大小为2MB或更多的文件时,它会抛出此异常:

java.net.SocketTimeoutException: timeout at java.lang.Thread.run(Thread.java:841)
caused by: java.net.SocketException: Socket is closed at
org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.checkOpen(OpenSSLSocketImpl.java:237) at
org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.access$100(OpenSSLSocketImpl.java:63) at
org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLOutputStream.write(OpenSSLSocketImpl.java:723) at
okio.Okio$1.write(Okio.java:80) at
okio.AsyncTimeout$1.write(AsyncTimeout.java:155)

上传少于2MB没有问题,每件事情都可以。

如何修改文件上传套接字超时和异常?

1 个答案:

答案 0 :(得分:3)

好吧,对于那些可能像我一样陷入困境的人,我必须说这个例外有一些原因,如弱连接,wifi信号差,低读写和连接超时等等......

检查所有情况,如果没有工作,您可以使用以下行:

我最后添加了这行代码:

OkHttpClient.setRetryOnConnectionFailure(true);

并设置更多超时时间

OkHttpClient.setConnectTimeout(10, TimeUnit.MINUTES);
OkHttpClient.setReadTimeout(10, TimeUnit.MINUTES);
OkHttpClient.setWriteTimeout(10, TimeUnit.MINUTES);

我想知道设置这10分钟是否会导致问题? 如果有人能告诉我,我将非常感激