1. 程式人生 > >retrofit/okhttp 網路差 重複請求的問題

retrofit/okhttp 網路差 重複請求的問題

問題描述:我在使用retrofit做網路請求的時候 ,偶見多次請求
經測試 伺服器debug 網路差 出現機率比較高,導致伺服器資料重複

retrofit初始化如下:

 mRetrofit = new Retrofit.Builder()
                .baseUrl(Api.BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();

解決辦法:初步判斷 是網路差時框架主動請求 直至3次失敗
看了retrofit原始碼發現,並沒有類似處理
後來懷疑是okHttp的設定

網上查了下資料最終找到了解決方法

程式碼如下:

OkHttpClient okHttpClient = new OkHttpClient.Builder()
        .retryOnConnectionFailure(false)
        .connectTimeout(DEFAULT_TIMEOUT, TimeUnit.MILLISECONDS)
        .build();
mRetrofit = new Retrofit.Builder()
        .baseUrl(Api.BASE_URL)
        .addConverterFactory
(GsonConverterFactory.create()) .client(okHttpClient) .build();