【问题标题】:Volley retry request齐射重试请求
【发布时间】:2014-02-17 11:41:05
【问题描述】:

我目前正在测试 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);
        }

【问题讨论】:

    标签: android-volley


    【解决方案1】:

    不,这不是正确的方法。

    旁白:

    • HTTP 404 不是状态代码,我希望 HTTP 行为正常 客户端在正常情况下重试。

    • 您最喜欢通过错误侦听器收到错误 提供给请求,但你的错误监听器是 NOOP 所以也许 你没注意到吗?

    • (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html 正常 状态码含义的描述。)

    • 请求的重试策略仅适用于以下原因导致的失败:打开套接字超时、套接字打开超时、HTTP 401 和 HTTP 403。所有其他失败都不会自动重试,AFAIK。

    我认为要使用 Volley 重试 404,您需要在 onErrorResponse 中手动重试。

    (无花果:如果向 RetryPolicy 咨询错误状态代码,那就太好了。我希望能够设置一个在 503 上重试的策略。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-26
      • 2012-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-08
      • 1970-01-01
      相关资源
      最近更新 更多