Retrofit2.0 这个网络请求框架使用了好久了,最近一次出现一个小插曲。网络
有一个接口,返回的数据量由于业务的缘由 会返回很大的数据量,此时网络不大好的状况下,会出现请求失败的状况框架
也就是回调了 onFaileure()方法,测试一下,大概都在10秒就会回调这个方法。ide
去后台验证,发现数据请求成功,获取成功,也就是否是数据的问题,那问题就在于请求的数据量过大致使请求没有10秒内处理成功的话就会请求失败。测试
解决办法就是给请求框架设置一个链接超时时间ui
// 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", "xxxx/xxxx/"+date) .build(); return chain.proceed(request); } }).connectTimeout(30, TimeUnit.SECONDS). // 设置链接超时时间 readTimeout(30, TimeUnit.SECONDS). writeTimeout(30, TimeUnit.SECONDS).build(); return httpClient; }