2016-08-16 7 views
1

AsyncTask.THREAD_POOL_EXECUTOR에 대한 일반적인 요청 및 응답이 있습니다. 수동으로 재시도 횟수를 구현했습니다. 이제는 두 웹 서비스가 동시에 작동하고 서로의 재시도 횟수를 사용하면 어떻게됩니까?Retrofit 2.0 재시도 횟수

클라이언트 OkHttpClient를 사용하여 개조하고 있습니다.

+0

동기화 된 메서드를 사용해야하며 그 메서드 내에서 해당 카운터를 전달하고 값을 늘려야한다고 생각합니다. – Gokul

답변

0

난 당신이 rxandroid로 전환 한 나는 (개조의 콜백 무시) 다시 정의 호출을 사용하여 그것을 해결 retry()

0

을 활용하는 것이 좋습니다 것입니다. 이 클래스에서는 재시도 횟수를 전달합니다. 따라서 응답 성공 또는 실패시 웹 서비스 관련 변수가 될 재 시도 횟수에 액세스 할 수 있습니다. 따라서 병렬 실행의 경우에는 서로 간섭하지 않습니다.

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

당신은 고유 요청을 식별하는 오브젝트/int 값을 생성하고 사용자 정의 콜백을 전달하고 저장할 수 있습니다. 당신이 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); 
    } 
    } 

을 얻을 것이다 경우

public interface CustomOnRequestFinishedListener { 

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

    void onError(RetrofitError error, Object data); 
} 

는 CustomOnRequestFinishedListener를 구현합니다.

+0

인터셉터에서 Listener를 어떻게 설정합니까? 인터셉터의 객체를 명시 적으로 만들 필요가 있습니까? – Dhrupal

+0

인터셉터에 없습니다. API 호출에서는 특정 API에 대한 사용자 정의 리스너를 제공 할 수 있습니다. 내 ans 편집 ... – Ramit

+0

내 대답을 편집했습니다 ... – Ramit