排球重试请求

时间:2014-02-17 11:41:06

标签: android-volley

我目前正在测试排球库。但是当请求失败时(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);
        }

1 个答案:

答案 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重试的策略。)