アプリでは、RxでRetrofit2を使用してGoogleのサーバーと通信します。私は変更baseUrl Retrofitで特定のHTTPエラーコードを取得したい場合。私は見つけたexample to change Request header on error with Interceptor. 私は複数の要求が合格するその場所以来、私はRetrofitでそのロジックを持っていることをお勧めします。 Rx retryWhen()
を使用する他のソリューションは、プロジェクトアプリのさまざまな場所で多くのリクエストがあるため、使いにくいです。Retrofitで変更されたbaseUrlでhttpリクエストを再試行します。サーバからの特定のエラーの場合
1
A
答えて
0
あなたがRxJavaを使用している場合、最も簡単な方法は、例えばオペレータonErrorResumeNext
でチェーンに要求されますが、ベースURL XXXXと異なるbaseUrlに(whiteApi
が失敗したときに呼び出される)と黒の改造blackApi
とwhiteApi
あります
whiteApi.getCat().onErrorResumeNext(err-> blackApi.getCat()) ...
blackApi
が失敗した場合は、.onErrorReturn()
とチェーンリクエストを送信して、応答を偽ることもできます。
0
単純に失敗した場合は、新しいベースURLを使用して別のレトロフィットインスタンスを作成してから、ジョブをクリアしてください。
0
はたぶん、あなたはあなたのサービスのためのクラスラッパーを作成することができます
public class ServiceGenerator {
public static String apiBaseUrl = "http://base.url/api";
private static Retrofit retrofit;
private static Retrofit.Builder builder =
new Retrofit.Builder()
.addConverterFactory(relevantConverter)
.baseUrl(apiBaseUrl);
private static OkHttpClient.Builder httpClient =
new OkHttpClient.Builder();
private ServiceGenerator() {
}
public static void changeApiBaseUrl(String newApiBaseUrl) {
apiBaseUrl = newApiBaseUrl;
builder = new Retrofit.Builder()
.addConverterFactory(relevantConverter)
.baseUrl(apiBaseUrl);
}
public static <S> S createService(Class<S> serviceClass, String baseUrl) {
builder.client(httpClient);
return builder.build().create(serviceClass);
}
// your methods
// ...
}
とするとき、あなたのごHTTPエラーコードの呼び出しchangeApiBaseUrlを取得します()。
これが役に立ちます。
私の英語のために残念です。
関連する問題
- 1. Retrofit - BaseUrlを変更
- 2. サーバがWebhookリクエストを受信できなかった場合、Stripe APIはWebhookリクエストを再試行しますか?
- 3. httpリクエストが失敗した場合、apiを再試行します。
- 4. Retrofit + RxJava - エラー時にキャッシュ/パブリッシュして再試行しますか?
- 5. git:httpリクエストが失敗した場合に再試行
- 6. 工場を使わずにHTTPリクエストを再試行する
- 7. 実行前のコミットフックファイルを特定のディレクトリの下に変更された場合
- 8. Emberデータからの再試行リクエスト
- 9. RxJavaでエラーが発生した後の再試行リクエストでパラメータを変更する方法
- 10. 特定のエラーコードが返された場合、Webサービスにリクエストを再送信
- 11. boto3のリクエストの再試行回数を変更する
- 12. 特定のエラーをキャッチしてスクリプトを再試行しますか? - BASH
- 13. 最初のリクエストが失敗した場合は、リクエストを再試行してください。
- 14. 再試行で失敗した場合のキュー処理
- 15. HTTPアウトバウンド再試行条件(チェッカー条件の場合)
- 16. Observableを再試行するときにHTTP上のヘッダーを変更します。
- 17. Netty HTTPクライアントでリクエストを再試行する
- 18. 「now()」が特定の日時である場合、行を変更します。 Django
- 19. ソケットレベルでの顧客リクエストの再試行
- 20. コミットのリストで特定の変更が検出された場合
- 21. 特定のパスワードの試行に失敗した場合、アンドロイドの電話機を再起動する言語
- 22. Nagiosの再試行間隔がOKまたはUPの場合
- 23. 内部エラー:受信者クラスの再試行が再試行されません
- 24. ダウンロードが失敗した場合のPowerShellコマンドの再試行
- 25. 他のURLでリクエストを自動的に再試行します
- 26. 特定のフィールドが変更された場合は 'child_changed'を起動しない
- 27. 特定のルールから特定のエラーが発生した場合のJQueryバリデータ固有の位置(errorPlacementはエラーの位置を変更しません)
- 28. Postman/Newmanが失敗した場合の再試行
- 29. gitクローンが失敗した場合の再試行方法は?
- 30. Retrofit 2を使用したAndroidでのHTTP POSTリクエスト