retrofit2设置超时,Retrofit2 SocketTimeOutException

retrofit2设置超时,Retrofit2 SocketTimeOutExceptionIsetupforRetrofit:privateInterceptorinterceptor=newInterceptor(){@OverridepublicResponseintercept(Chainchain)throwsIOException{Requestrequest=chain.request();if(!NetworkUtil.isNetwo…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

retrofit2设置超时,Retrofit2 SocketTimeOutException

I setup for Retrofit:

private Interceptor interceptor = new Interceptor() {

@Override

public Response intercept(Chain chain) throws IOException {

Request request = chain.request();

if (!NetworkUtil.isNetworkAvailable()) {

request = request.newBuilder()

.cacheControl(CacheControl.FORCE_CACHE)

.build();

}

Response response = chain.proceed(request); //Exception here

if (NetworkUtil.isNetworkAvailable()) {

String cacheControl = request.cacheControl().toString();

response = response.newBuilder()

.removeHeader(“Pragma”)

.removeHeader(“Cache-Control”)

.header(“Cache-Control”, cacheControl)

.build();

} else {

int maxStale = 60 * 60 * 24 * 7;

response = response.newBuilder()

.removeHeader(“Pragma”)

.removeHeader(“Cache-Control”)

.header(“Cache-Control”, “public, only-if-cached, max-stale=” + maxStale)

.build();

}

return response;

}

};

And I use to setup cache:

builder = new OkHttpClient.Builder()

.cookieJar(new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(Apploader.context)))

.addNetworkInterceptor(interceptor)

.addInterceptor(interceptor)

.cache(cache)

.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS);

Sometime when server response too long My Application crash because SocketTimeOut

It break on line: Response response = chain.proceed(request); as I comment.

SocketTimeOut is subclass of IOException, why my code can’t catch it.

How do I resolved this problem.

解决方案

Use OkHttpClient for more configurations, like follwing :

final OkHttpClient okHttpClient = new OkHttpClient.Builder()

.connectTimeout(20, TimeUnit.SECONDS)

.writeTimeout(20, TimeUnit.SECONDS)

.readTimeout(30, TimeUnit.SECONDS)

.build();

and then set this okHttpClient with RetrofitBuilder,

Retrofit.Builder()

.client(okHttpClient);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180148.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux版navicat安装和激活成功教程「建议收藏」

    linux版navicat安装和激活成功教程「建议收藏」 原 linux版navicat安装和激活成功教程 2017年09月27日10:27:00 ispotu 阅读数:30819 <spanclass="tags-boxartic-tag-box"&a

    2022年11月1日
  • Ubuntu16.04 Caffe 安装步骤记录(超详尽)

    历时一周终于在ubuntu16.04系统成功安装caffe并编译,网上有很多教程,但是某些步骤并没有讲解详尽,导致配置过程总是出现各种各样匪夷所思的问题,尤其对于新手而言更是欲哭无泪,在我饱受折磨后决定把安装步骤记录下来,尽量详尽清楚明白,避免后来小白重蹈覆辙。安装硬件:inteli5+NVIDIA740M安装流程细分为如下10个步骤,细化步骤粒度更易避免出错

    2022年4月17日
  • C++矩阵运算

    C++矩阵运算

    2021年11月19日
  • Render、RenderChildren和RenderControl

    Render、RenderChildren和RenderControl(1)protectedvirtualvoidRender(HtmlTextWriterwriter);  该方法用于将服务器控件内容发送到提供的HtmlTextWriter对象,此对象编写将在客户端呈现的内容。在开发服务器控件时,可以重写此方法以呈现服务器控件。  (2)protectedvirtualvoidRenderChildren(HtmlTextW…

    2022年7月20日
  • 解密excel文件打开密码「建议收藏」

    解密excel文件打开密码「建议收藏」excel文件带有打开密码,忘记了密码或者是不知道密码的情况下,想要打开文件是需要解密工具帮助的,因为需要找到正确的密码才能够打开文件,其他方法好像还没办法成功解决文件打开密码。解密工具:【EXCEL解密大师】快速找回密码_轻松移除使用限制-奥凯丰okfone打开软件,选择【找回密码】功能,将文件添加进去,选择一个找回方法,点击【开始】之后等待软件找回密码关于找回方法:组合激活成功教程、掩码激活成功教程:适用于可以提供密码信息的情况,这两种方法可以根据密码信息更快速的找回密码,六位数及一下的密码,十分钟

    2022年6月28日
  • STM32入门教程第一讲

    STM32入门教程第一讲STM32入门教程,采用STM32F10系列芯片

    2022年9月6日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号