出现连接超时SocketTimeoutException后一直连接不上的
2017-01-06 15:40
513 查看
MIUI
在小米中出现这个异常会有一句日志:com.miui.networkassistant.deamon I/XiaomiFirewall: firewall pkgName:com.xxxxx.xxxxxx, result:0x0
关闭神隐模式就好了~!
下面的不确定有没有用/(ㄒoㄒ)/~~
需求频繁的上传数据,本来使用HttpClient上传数据,每次上传一段时间就会出现连接超时的问题,然后后续的请求统统都是连接超时。后来换了okhttp3.5还是一样的问题。不明白了。ios好好的,用的公司wifi,绑不绑电脑ip代理都会出现,而且只是个别手机出现。基本上运行一个小时才会出现,调试好费时间的。下面是我的解决方法,我也不知道为啥。很简陋我的OKhttpClient是这样的,默认10秒。改不改都行吧,测试一次得几个小时,很浪费时间,没有一个一个测试。
okHttpClient=new OkHttpClient.Builder() .connectTimeout(90, TimeUnit.SECONDS) .readTimeout(90,TimeUnit.SECONDS) .build();
我的request是这样的,改了个头部,不知道有没有影响
request = new okhttp3.Request.Builder() .url(url) .addHeader("Connection", "close") .build();
对于异步的,失败后清除连接请求和连接池,新建连接请求
Call call= okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { okHttpClient.dispatcher().cancelAll(); okHttpClient.connectionPool().evictAll(); okHttpClient.newCall(request).enqueue(this); } @Override public void onResponse(Call call, Response response) throws IOException { Log.i(TAG, "okhttp onResponse: "+response.body().string()+"caseid= "+caseid); deletImage(cutScreenPath); } });
对于同步的,在catch中捕获到SocketTimeoutException 异常后,清除连接请求和连接池,重新建立连接请求
try { Response response= okHttpClient.newCall(request).execute(); String result = response.body().string(); } catch (JSONException e) { e.printStackTrace(); } catch (SocketTimeoutException e) { Log.i(TAG, "ontask rerun: "+e.getCause()); okHttpClient.dispatcher().cancelAll(); okHttpClient.connectionPool().evictAll(); //TODO: 重新请求 e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
相关文章推荐
- CXF客户端配置请求超时限制-SocketTimeoutException(Spring配置文件中配置和通过代码进行配置)
- 解决:使用java连接Fastdfs,上传文件时报:SocketTimeOutException的问题.
- 使用java连接Fastdfs,上传文件时报:SocketTimeOutException的问题.
- FlashFXP出现“数据Socket错误,连接超时”解决方案
- 使用java连接Fastdfs,上传文件时报:SocketTimeOutException的问题
- java socketTimeOut, jdbc timeout 连接超时时间
- MongoDB 查询超时异常 SocketTimeoutException
- 使用spring管理数据库的链接,总是连接超时com.mchange.v2.resourcepool.TimeoutException
- 关于http socket timeout 超时时间 未设置 导致线程一直在等待(线程饥饿),微信公众号开发过程遇到的。java
- android网络连接经常出现Timeout,NetworkOnMainThreadException问题,手动浏览器访问web地址正常
- java连接mongod抛java.net.SocketTimeoutException: connect timed out异常(2015-11-07 20:29:58)
- System.Data.Entity.Core.EntityException: The underlying provider failed on Open. ---> System.InvalidOperationException: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
- System.InvalidOperationException: 超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小。
- Webservice 调用出现 java.net.SocketTimeoutException
- 利用itext向pdf模板设置内容并下载时出现socket timeout exception
- 关于http socket timeout 超时时间 未设置 导致线程一直在等待(线程饥饿),微信公众号开发过程遇到的。java
- FlashFXP出现“数据Socket错误,连接超时”解决方案
- Android出现java.net.SocketException: Permission denied 的问题 ,Android连接网络
- 刷新共享对象管理器缓存时发生意外错误。System.InvalidOperationException:超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并
- [转]超时时间已到。超时时间已到,但是尚未从池中获取连接。出现这种情况可能是因为所有池连接均在使用,并且达到了最大池大小