天天看點

關于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();
           

大概就是這樣目前解決了問題