2016-08-01 33 views
3

在我的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和上传少没问题每件事情都很好。

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

+0

您已达到服务器的最大上传大小。 – greenapps

+0

@greenapps最大服务器上传大小为10MB – Hoven

回答

3

OK,一个人可能会停留在这个喜欢我,我必须说,有一些原因,此异常像弱连接,无线网络信号不好,低读写和连接和超时等..

检查所有的情况下,如果我以前不得到工作,你可以使用下面几行:

我弄成这样,加入这行代码:

OkHttpClient.setRetryOnConnectionFailure(true); 

和设置更多的超时期限

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

我想知道如果设置这10分钟可能会导致问题? 如果有人能告诉我,我将不胜感激

+1

*“这种异常有一些原因,例如....”* - 其在移动设备上的*'ConnectionManager' *。他们在不同的平台上以不同的名字出现。它试图为堆栈添加更具弹性的网络层。这是我的经验,他们都试图假装即使没有可用的连接也是可用的。他们缓冲inouts和输出,他们隐藏异常,他们与定时器混乱等... – jww

+0

@jww谢谢,这是一件好事,知道 – Hoven

+0

为我工作与改造2.0 –