Retrofit2.0 設置 鏈接超時

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;
    }
相關文章
相關標籤/搜索