ari*_*_sh 58 android android-volley
我对慢速网络上的Volley POST请求有问题.每次我BasicNetwork.logSlowRequests在LogCat中看到,我的POST请求都会执行两次或更多次,从而产生多个(2次或更多次)1个请求的帖子.我已经将重试策略设置为0,但它没有帮助.
这是我的LogCat
03-16 01:31:35.674:D/Volley(5984):[19807] BasicNetwork.logSlowRequests:请求的HTTP响应= <[] http:// [myserver]/api/places 0xfa7d0c33 NORMAL 1> [lifetime = 3824 ],[size = 313],[rc = 200],[retryCount = 0] 03-16 01:31:35.704:D/Volley(5984):[1] Request.finish:3853 ms:[] http://[myserver]/api/places 0xfa7d0c33 NORMAL 1
这是我的代码
JSONObject body = new JSONObject();
try {
body.put(PROTO_BODY_AUTHORIZATION, Sessions.getActiveSession().getToken());
} catch (JSONException e) {
e.printStackTrace();
}
JsonObjectRequest request = new JsonObjectRequest(
Request.Method.POST,
context.getResources().getString(R.string.server_address) + "/places",
body,
callback,
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(context, error.getMessage(), Toast.LENGTH_LONG).show();
}
}
);
request.setRetryPolicy(
new DefaultRetryPolicy(
DefaultRetryPolicy.DEFAULT_TIMEOUT_MS,
0,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
getRequestQueue().add(request);
Run Code Online (Sandbox Code Playgroud)
请帮忙,我拼命寻找这个问题的解决方案.
小智 45
将以下值添加到Request对象:
request.setRetryPolicy(new DefaultRetryPolicy(
DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 2,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Run Code Online (Sandbox Code Playgroud)
这里: request是JsonObjectRequest的对象.根据Volley中DefaultRetryPolicy类中的DEFAULT TIMEOUT VALUE更改乘数的值.
您还可以将第一个参数设置为0,如下所示:
request.setRetryPolicy(new DefaultRetryPolicy(
0,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Run Code Online (Sandbox Code Playgroud)
小智 17
只是将RetryPolicy中的Timeout设置为0太小了.检查源后,您必须实际设置最大重试次数<0,因为它检查当前<= max ...
我修改了双重发布,并将策略设置为以下内容
new DefaultRetryPolicy(0, -1, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!
我找到了双帖的解决方案,我只是将超时设置为0.
| 归档时间: |
|
| 查看次数: |
44843 次 |
| 最近记录: |