【问题标题】:Modify File Upload Socket Timeout and Exception修改文件上传套接字超时和异常
【发布时间】:2016-08-01 05:27:12
【问题描述】:

在我的 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 没有问题,一切正常。

如何修改文件上传socket超时和异常?

【问题讨论】:

  • 您已达到服务器的最大上传大小。
  • @greenapps 最大服务器上传大小为 10MB

标签: android retrofit okhttp socket-timeout-exception


【解决方案1】:

好的,对于像我这样可能会卡在这个问题上的人,我必须说这个异常有一些原因,比如连接弱、wifi 信号差、读写低和连接超时等等......

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

我通过添加这行代码来结束这个:

OkHttpClient.setRetryOnConnectionFailure(true);

并设置更多的超时时间

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

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

【讨论】:

  • “这个异常有一些原因,比如......” - 它是在移动设备上找到的 ConnectionManager。它们在不同的平台上有不同的名称。它试图向堆栈添加更具弹性的网络层。根据我的经验,他们都试图假装连接可用,即使连接不可用。他们缓冲输入和输出,他们隐藏异常,他们搞砸计时器,等等......
  • 我如何在 kotlin 中做到这一点?
猜你喜欢
  • 1970-01-01
  • 2011-11-02
  • 2019-08-13
  • 1970-01-01
  • 2012-09-06
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
  • 2018-05-18
相关资源
最近更新 更多