2014-02-17 91 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 客戶端以重試。

  • 你最希望通過的錯誤監聽收到錯誤 你供應的要求,但你的錯誤監聽是一個空操作,所以也許 你沒有注意到?

  • http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html有狀態代碼含義OK 描述。)

  • 請求的重試政策僅適用於因故障:打開套接字超時,插座口超時,HTTP 401S和HTTP 403S。所有其他故障不會自動重試,AFAIK。

我認爲,重新發送帶凌空404,你需要用手onErrorResponse重試它。

(Ficus:如果RetryPolicy參考了錯誤狀態代碼,我希望能夠設置一個重試503s的策略)