2014-04-23 3 views
1

서버에서 401 오류가 발생하면 자동 재가동 및 재 시도 요청 (성공의 경우)이 필요합니다. 나는 Volley lib를 사용하고 있습니다. 지금까지이 응답 또는 예외를 얻을 때까지 나는 동안 (사실) 루프에서 실행되는 발리 소스에서 볼 수 :발리에서 다시 로그인 및 재시도 요청

@Override 
public NetworkResponse performRequest(Request<?> request){ 
    while (true) { 
     try { 
      httpResponse = mHttpStack.performRequest(request, headers); 
      return httpResponse; 
     } catch (IOException e) { 
      statusCode = httpResponse.getStatusLine().getStatusCode(); 
      if (statusCode == HttpStatus.SC_UNAUTHORIZED || statusCode == HttpStatus.SC_FORBIDDEN) { 
       attemptRetryOnException("auth", request, new AuthFailureError(networkResponse)); 
      } 
     } 
    } 
} 

을하지만 난 성공 로그인 응답을받을 때까지이 루프를 중지하려면 다음 것 응답을 얻기위한 시도를 계속합니다.

사용자 지정 RetryPolicy에서 발리 소스를 수정하지 않고도이를 수행 할 수 있습니까?

답변

1

는 자신의 RetryPolicy을 구현하고이 같은 public void retry(VolleyError error) 방법 오버라이드 (override) :

@Override 
    public void retry(VolleyError error) throws VolleyError { 
     if (error.networkResponse.statusCode == HttpStatus.SC_UNAUTHORIZED) 
     { 
      throw new VolleyError("Client is not authorized, retry is pointless"); 
     } 
    } 
관련 문제