android – Okhttp3设置超时是没用的

android – Okhttp3设置超时是没用的,第1张

概述OkHttpClient client;client = new OkHttpClient.Builder() .connectTimeout(5, TimeUnit.SECONDS) .writeTimeout(5, TimeUnit.SECONDS) .readTimeout(5, TimeUnit.SECONDS) .bui
OkhttpClIEnt clIEnt;clIEnt = new OkhttpClIEnt.Builder()        .connectTimeout(5,TimeUnit.SECONDS)        .writeTimeout(5,TimeUnit.SECONDS)        .readTimeout(5,TimeUnit.SECONDS)        .build();Request request22 = new Request.Builder()        .url("http://www.goo.com/")        .build();Utils.myLog("-begin-");Response response = null;try {    response = clIEnt.newCall(request22).execute();    if (response.isSuccessful()) {        Utils.myLog("-donw-");    }} catch (Exception e) {    e.printstacktrace();    Utils.myLog("-error-" + e.toString());}

这是我的代码,我将超时设置为5秒,但在“开始”之后仍然需要20秒才能收到“error unkNownhostexception”?为什么我的代码没用?我看过OKhttp的源代码,默认超时是10秒(如果我是对的),我很困惑.

任何人都可以帮忙,我真的很感激.

解决方法@H_301_16@ 目前,Okhttp无法中断耗时的DNS请求(参见 https://github.com/square/okhttp/issues/95),但您仍然可以执行以下 *** 作:

OkhttpClIEnt clIEnt = new OkhttpClIEnt.Builder()                .addInterceptor(interceptor)                .readTimeout(15,TimeUnit.SECONDS)                .writeTimeout(15,TimeUnit.SECONDS)                .connectTimeout(15,TimeUnit.SECONDS)                .dns(hostname -> Single.fromCallable(                        () -> Arrays.asList(InetAddress.getAllByname(hostname))                ).timeout(15,TimeUnit.SECONDS)                        .subscribeOn(Schedulers.io())                        .observeOn(Schedulers.computation())                        .onErrorReturnItem(new ArrayList<>())                        .blockingGet())                .build();
总结

以上是内存溢出为你收集整理的android – Okhttp3设置超时是没用的全部内容,希望文章能够帮你解决android – Okhttp3设置超时是没用的所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1125974.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存