OkHttp3超时设置

已经不能在 OkHttp3中使用的方法

为了容错和更好的用户体验,必须为OkHttp设置超时。

上网找了半天,只找到下面的代码。注意它们不能在 OkHttp3中使用

public ConfigureTimeouts() throws Exception {client = new OkHttpClient();client.setConnectTimeout(10, TimeUnit.SECONDS);client.setWriteTimeout(10, TimeUnit.SECONDS);client.setReadTimeout(30, TimeUnit.SECONDS);
}

以上代码中的方法setConnectTimeout,在OkHttp3中根本就不存在。

OkHttp3中设置超时的方法

上官网查资料,找到了新的方法

见网址:http://square.github.io/okhttp/3.x/okhttp/

Method Detail

connectTimeout

public OkHttpClient.Builder connectTimeout(long timeout,
TimeUnit unit)

Sets the default connect timeout for new connections. A value of 0 means no timeout, otherwise values must be between 1 and Integer.MAX_VALUE when converted to milliseconds.

readTimeout

public OkHttpClient.Builder readTimeout(long timeout,
TimeUnit unit)

Sets the default read timeout for new connections. A value of 0 means no timeout, otherwise values must be between 1 and Integer.MAX_VALUE when converted to milliseconds.

writeTimeout

public OkHttpClient.Builder writeTimeout(long timeout,
TimeUnit unit)

Sets the default write timeout for new connections. A value of 0 means no timeout, otherwise values must be between 1 and Integer.MAX_VALUE when converted to milliseconds.

从上面可以看到设置超时移到了OkHttpClient.Builder中,所以最新的设置超时的代码如下:

    public WebApi(){client = new OkHttpClient.Builder().connectTimeout(10, TimeUnit.SECONDS).readTimeout(20, TimeUnit.SECONDS).build();}

捕获OkHttp3超时

然后捕获异常,加以处理。

    public void GetServersList(IServersListEvent serversListEvent) {this.serversListEvent = serversListEvent;serversLoadTimes = 0;Request request = new Request.Builder().url(serversListUrl).build();client.newCall(request).enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {if(e.getCause().equals(SocketTimeoutException.class) && serversLoadTimes<maxLoadTimes)//如果超时并未超过指定次数,则重新连接{serversLoadTimes++;client.newCall(call.request()).enqueue(this);}else {e.printStackTrace();WebApi.this.serversListEvent.getServers(null);}}@Overridepublic void onResponse(Call call, Response response) throws IOException {String html = new String(response.body().bytes(), "big5");Matcher m = serversListPattern.matcher(html);ServersList serverList = new ServersList();while (m.find()){serverList.add(new ServerInfo(m.group(1), m.group(2)));}Matcher mc1 = selectServerCodePattern.matcher(html);Matcher mc2 = selectCityCodePattern.matcher(html);if(mc1.find())serverList.selectServerCode=mc1.group(1);if(mc2.find())serverList.selectCityCode=mc2.group(1);WebApi.this.serversListEvent.getServers(serverList);}});}

OkHttp3超时设置和超时异常捕获相关推荐

  1. Android okhttp3使用实例,OKhttp设置请求超时时间,okgo使用demo

    1.导入OKhttp依赖 compile 'com.squareup.okhttp3:okhttp:3.4.1' 2.创建请求工具类 三个工具类 /*** 作者:created by meixi* 邮 ...

  2. JDBC未设置socket超时导致应用程序的线程池阻塞

    应用阻塞,查看堆栈发现线程阻塞在线程池的同步方法上,而进入同步方法的线程在等待socket读. 推测为网络问题导致的连接阻塞,但应用未设置socket超时而一直等待.网上说JDBC通过socket实现 ...

  3. Android进阶——Crash异常捕获并发送到服务器

    在项目中,我们常常会遇到Crash的现象,也就是程序崩溃的时候,这个时候最常看到的就是这个界面 如果你的项目已经发布到市场上了,这样的崩溃对于开发人员是看不到的,所以我们得想方法将崩溃信息发送到服务器 ...

  4. java请求超时异常捕获_我异常了,快来捕获我,Java异常简述

    在我们日常编程中,异常处理是必不可少的,异常处理是否得当关系到程序的健壮性和后续维护成本. 试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻找出错的根源?但是如果一个项目异常处理设 ...

  5. 1114Selenium web自动化测试经验分享-设置网页超时加载时间set_page_load_timeout()

    最开始学习web自动化测试就遇到一个小困扰,有时候设计的用例可能会打开新浪.腾讯这些网站,等待网页加载完成都要小半分钟.最近重拾web自动化测试,又遇到这个困扰. 个人博客:https://blog. ...

  6. RPC的超时设置,一不小心就是线上事故

    来自:IT人的职场进阶 上面这张监控图,对于服务端的研发同学来说再熟悉不过了.在日常的系统维护中,『服务超时』应该属于监控报警最多的一类问题. 尤其在微服务架构下,一次请求可能要经过一条很长的链路,跨 ...

  7. 醉了,RPC 超时设置也能引起线上事故!

    上面这张监控图,对于服务端的研发同学来说再熟悉不过了.在日常的系统维护中,『服务超时』应该属于监控报警最多的一类问题. 尤其在微服务架构下,一次请求可能要经过一条很长的链路,跨多个服务调用后才能返回结 ...

  8. ajax接口一直在重复调用请求是什么原因_为什么RPC超时设置非常重要

    上面这张监控图,对于服务端的研发同学来说再熟悉不过了.在日常的系统维护中,『服务超时』应该属于监控报警最多的一类问题. 尤其在微服务架构下,一次请求可能要经过一条很长的链路,跨多个服务调用后才能返回结 ...

  9. python爬虫网络请求超时_python总urllib,伪装,超时设置,异常处理的方法

    python爬虫之urllib,伪装,超时设置,异常处理的方法 Urllib 1. Urllib.request.urlopen().read().decode() 返回一个二进制的对象,对这个对象进 ...

最新文章

  1. RabbitMQ 入门系列(2)— 生产者、消费者、信道、代理、队列、交换器、路由键、绑定、交换器
  2. SQL Server不能启动
  3. 张家口zec挖矿软件哪里下载_AMTO软件下载-AMTO挖矿官网版v1.1
  4. 哈希表(hashtable)的javascript简单实现
  5. 本地提交spark_Spark 数据本地化级别
  6. 【转】常用的风控算法模型评价指标
  7. flutter 刷脸_支付宝刷脸认证 - osc_bkdv2it5的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. vscode-go 插件安装
  9. static用法报错解决:cannot declare member function to have static linkage [-fpermissive]
  10. Pthread线程基础学习
  11. 基于python的opencv计算机视觉基础知识及例程代码【视觉入门看这一篇就够了】
  12. 数据产品经理之数据准确性及测试必要性
  13. MacOS redis开机启动设置
  14. 51单片机实现用一个定时器输出可调PWM
  15. Pintia(拼题A)刷题插件 on VS Code
  16. Excel 时间格式相减
  17. 51单片机课程设计《三路步进电机控制》
  18. Ubuntu安装显卡驱动及设置3d桌面
  19. 6 --> MAC层协议
  20. Themida是先进的Windows软件保护系统

热门文章

  1. C#/VB.NET语法的比较
  2. 06Pausing and Resuming an Activity
  3. 公共关系礼仪实务章节测试题——社会关系和公共关系(二)
  4. 成都大数据Hadoop与Spark技术培训班
  5. 开发棋牌游戏平台要多少钱?
  6. 移动护理、护士工作站 UI界面及业务
  7. c linux ping 实现
  8. 反射内存 延时_PCI5565反射内存网技术的应用研究
  9. 【OpenCV】 红绿灯识别检测
  10. 两位数码管30秒倒计时c语言,基于51单片机共阴两位数码管显示倒计时