我目前正在测试排球库。但是当请求失败时(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);
}
答案 0 :(得分:4)
不,这不是正确的方法。
旁白:
HTTP 404不是我期望正常行为的HTTP的状态代码 客户在正常情况下重试。
您最喜欢通过错误监听器收到错误 提供请求,但你的错误监听器是NOOP所以也许 你没有注意到?
(http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
没问题
状态代码含义的描述。)
请求的重试策略仅适用于以下原因导致的故障:打开套接字超时,套接字打开超时,HTTP 401和HTTP 403。所有其他故障都不会自动重试,AFAIK。
我认为要使用Volley重试404,您需要在onErrorResponse
手动重试。
(Ficus:如果为错误状态代码咨询了RetryPolicy会很好。我希望能够设置一个在503s重试的策略。)