2014-02-17 56 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的策略)