2015-11-16 37 views
0

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

我使用的是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个enteries。 JsonObjectRequest是否在每次迭代中发送多个请求?

+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