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() {@Overridepublic 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;}