Android中的JsonObjectRequest发送多个请求

时间:2015-11-16 06:35:32

标签: android jsonobjectrequest

我正在构建一个Android应用程序,其中一些数据从Android设备发送到服务器,每1秒30秒。 (共有30个服务器请求)。

我正在使用for循环:

for(i=0;i<30;i++){
//Some data computation
JsonObjectRequest req = new JsonObjectRequest(url, new JSONObject(params),
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            VolleyLog.v("Response:%n %s", response.toString(4));
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.e("Error: ", error.getMessage());
            }
        });
}

我的服务器端有超过30个用户。 JsonObjectRequest是否在每次迭代中发送多个请求?

1 个答案:

答案 0 :(得分:1)

默认情况下,Volley会向服务器发出多个请求(默认重试策略)。 可以在DefaultRetryPolicy.java中找到这些设置。 因此,根据此默认策略,Volley会尝试等待2500毫秒的响应,但是如果在此时间范围内未收到响应,则会重试DEFAULT_MAX_RETRIES设置的数字,即1.并使用DEFAULT_BACKOFF_MULT变量确定每次重试尝试设置为套接字的指数时间。

/** The default socket timeout in milliseconds */
public static final int DEFAULT_TIMEOUT_MS = 2500;

/** The default number of retries */
public static final int DEFAULT_MAX_RETRIES = 0;

/** The default backoff multiplier */
public static final float DEFAULT_BACKOFF_MULT = 1f;

现在,要停止多个请求,可以使用请求对象的setRetryPolicy()方法为请求对象配置重试策略。

//req = Request
req.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 0,
      DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

参考:Here