[解決済み] OkHttp/Retrofitを使用してHTTPリクエストを再試行するには?
2023-04-08 12:23:34
質問
AndroidプロジェクトでRetrofit/OkHttp (1.6)を使用しています。
どちらもリクエストリトライの仕組みは組み込まれていないようですね。さらに検索してみると、OkHttp には silent-retry があるようです。私の接続 (HTTP または HTTPS) のいずれでも、それが起こっているのを見たことがありません。okclientでリトライを設定する方法は?
今のところ、私は例外をキャッチし、カウンタ変数を維持する再試行しています。
どのように解決するのですか?
Retrofit 2.xの場合。
以下のように call.clone() メソッドを使用して、リクエストを複製して実行します。
Retrofit 1.xの場合。
以下のように インターセプター . カスタムインターセプターを作成する
OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(CONNECT_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
client.setReadTimeout(READ_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
client.interceptors().add(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
// try the request
Response response = chain.proceed(request);
int tryCount = 0;
while (!response.isSuccessful() && tryCount < 3) {
Log.d("intercept", "Request is not successful - " + tryCount);
tryCount++;
// retry the request
response = chain.proceed(request);
}
// otherwise just pass the original response on
return response;
}
});
そして、RestAdapterを作成する際に使用します。
new RestAdapter.Builder()
.setEndpoint(API_URL)
.setRequestInterceptor(requestInterceptor)
.setClient(new OkClient(client))
.build()
.create(Adapter.class);
関連
-
[解決済み】Retrofit 2でのログ取得について
-
[解決済み] OKHttpを搭載したRetrofitはオフライン時にキャッシュデータを使用できますか?
-
[解決済み] OkHttpがあるのに、なぜRetrofitを使うのか?
-
[解決済み] FloatingActionButtonのサンプルとサポートライブラリ
-
[解決済み] onCreate(Bundle savedInstanceState)とは?
-
[解決済み] アンドロイドのクライアントでヒープアップデートを有効にする方法
-
[解決済み] Android: ランドスケープモード用の代替レイアウト xml
-
[解決済み] RecyclerViewのアイテムに波及効果を追加する
-
[解決済み] proguard hell - 参照されているクラスが見つかりません。
-
[解決済み] BottomNavigationViewを新しいNavControllerで使用する際に、フラグメントを生かす方法はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Nexus 4でUSBデバッグモードを見つける方法とオンにする方法
-
[解決済み] 「KotlinとAndroidで「パラメータTを推測するのに十分な情報がありません。
-
[解決済み] 非ActivityクラスでContextを取得する [重複].
-
[解決済み] AndroidでTextViewの下にアンダーラインを引くには
-
[解決済み] ProjectScopeServices に Factory タイプのサービスはありません。
-
[解決済み] PendingIntentの "requestCode "は何に使うのですか?
-
[解決済み] Androidでツールバーの戻るボタンの色を変えるには?
-
[解決済み] google-services.jsonって実際何してるの?
-
[解決済み] Android APKファイルの中身を見るには?
-
[解決済み] ViewPager2でスワイプを無効にするには?