2016-08-16 17 views
1

私はAsyncTask.THREAD_POOL_EXECUTORで共通の要求と応答を持っています。手動で再試行回数を実装しました。次に、2つのWebサービスが同時に動作していて、お互いの再試行回数を使用している場合はどうなりますか。Retrofit 2.0リトライ回数

私は、クライアントOkHttpClientでレトロフィットを使用しています。

+0

私はあなたが同期メソッドを使用する必要があり、そのメソッド内でそのカウンタを渡して値を増やすべきだと思います。 – Gokul

答えて

0

私は、カスタム(改造のコールバックをオーバーライド)コールバック使用して、それを解決しrxandroidに切り替えて、retry()

0

を活用するためにあなたをお勧めします。このクラスでは、再試行回数を渡します。したがって、成功または失敗の応答では、Webサービス固有の可変再試行回数にアクセスできます。並列実行の場合、相互に干渉しません。

@POST("/xyz/abc/") 
    void getSomeData(
      @Body TypedInput body, 
      Callback<Response> callback); 

カスタムコールバックを作成して渡し、オブジェクト/ int値を保存して、要求を一意に識別することができます。

public interface CustomOnRequestFinishedListener { 

    void onSuccess(Object response, Response retrofitResponse, Object data); 

    void onError(RetrofitError error, Object data); 
} 

あなたがCustomCallbackを呼び出すために、あなたが最初にリクエストにいくつかのユニークなデータを設定し、応答で同じデータを取得します。この方法では、成功/失敗のコールバック

public class CustomCallback extends CallBack 
    { 
    private final Object data; 
private final CustomOnRequestFinishedListener customOnRequestFinishedListener; 
    public CustomCallback(CustomOnRequestFinishedListener customOnRequestFinishedListener, Object data) 
    { 
     this.data = data; 
this.customOnRequestFinishedListener = customOnRequestFinishedListener; 
    } 

    @Override 
    public void success(Object o, Response response) 
    { 
     customOnRequestFinishedListener.onSuccess(o, response, data); 
    } 

    @Override 
    public void failure(RetrofitError error) 
    { 
     customOnRequestFinishedListener.onError(error, data); 
    } 
    } 

を取得しますたい場所CustomOnRequestFinishedListenerを実装します。

+0

インターセプターでListenerを設定する方法を教えてください。インターセプタのオブジェクトを明示的に正しく作成する必要がありますか? – Dhrupal

+0

インターセプタにはありません。 APIコールでは、特定のAPIのカスタムリスナを提供することができます。私のansの編集... – Ramit

+0

私の答えを編集しました... – Ramit

関連する問題