2014-02-17 4 views
3

현재 발리 라이브러리를 테스트 중입니다. 그러나 요청이 실패 (404)하면 다시 실행되지 않거나 적어도 오류가 없습니다. 데이터가 누락되었습니다. 요청이 실패한 경우 요청을 다시 시도하는 것이 올바른 방법입니까? 사전에발리 재시도 요청

감사

req.setRetryPolicy(new DefaultRetryPolicy(5000,1,1.0f)); 
queue.add(req); 

사용법 :

JsonObjectRequest req = null; 
     for(int i=0;i<profielen.size();i++){ 
      final int pos = i; 
      req = new JsonObjectRequest(Request.Method.GET, imageLocUrl, null, new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(JSONObject response) { 
         try { 
          setImageOnProfile(pos,response.get("thumbnail").toString()); 
         } catch (JSONException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 


      }}, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError error) { 
       } 
      }); 

      req.setRetryPolicy(new DefaultRetryPolicy(5000,1,1.0f)); 
      queue.add(req); 
     } 

답변

4

아니, 그건 올바른 방법이 아니다.

잡담 :

  • HTTP 404 내가 정상적인 조건에서 정상적으로 동작하는 HTTP 클라이언트가 재 시도를 기대하는 상태 코드가 아닙니다.

  • 오류 요청자에게 오류가 발생하는 것이 가장 좋지만 오류 청취자는 NOOP이므로 알지 못하겠습니까?

  • (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html는 상태 코드의 의미를 확인 설명이 있습니다.)

  • 요청의 재시도 정책 만에 의한 고장에 적용 열린 소켓 시간 초과, 소켓 개방 시간 제한, HTTP의 401S와 HTTP의 403s. AFAIK는 다른 모든 실패가 자동으로 재 시도되지 않습니다.

는 나는 당신이 onErrorResponse에 손으로 다시 시도 할 필요가 발리와 404 재시도 생각합니다.

(Ficus : RetryPolicy가 오류 상태 코드를 참조하면 좋을 것입니다 .503에서 다시 시도하는 정책을 설정할 수 있습니다.)