retrofit2.0 这个网络请求框架使用了很久了,最近一次出现一个小插曲。
有一个接口,返回的数据量因为业务的原因 会返回很大的数据量,此时网络不大好的情况下,会出现请求失败的情况
也就是回调了 onfaileure()方法,测试一下,大概都在10秒就会回调这个方法。
去后台验证,发现数据请求成功,获取成功,也就是不是数据的问题,那问题就在于请求的数据量过大导致请求没有10秒内处理成功的话就会请求失败。
解决办法就是给请求框架设置一个连接超时时间
// retrofit 网络数据请求
public static retrofitapi retrofit() {
if (retrofitapi == null) {
retrofitapi = new retrofit.builder()
.baseurl(apkmanager.baseurl)
.addconverterfactory(gsonconverterfactory.create())
.client(genericclient())
.build()
.create(retrofitapi.class);
}
return retrofitapi;
}
public static string date = "000000"; //记录版本发布时间
public static okhttpclient genericclient() {
okhttpclient httpclient = new okhttpclient.builder()
.addinterceptor(new interceptor() {
@override
public response intercept(chain chain) throws ioexception {
request request = chain.request()
.newbuilder()
.addheader("user-agent", "magikare/therapist/"+date)
.build();
return chain.proceed(request);
}
}).connecttimeout(30, timeunit.seconds). // 设置连接超时时间
readtimeout(30, timeunit.seconds).
writetimeout(30, timeunit.seconds).build();
return httpclient;
}
如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!