gpt4 book ai didi

当重试策略设置为 0 时,Android Volley 向服务器发出 2 个请求

转载 作者:IT老高 更新时间:2023-10-28 23:25:30 29 4
gpt4 key购买 nike

我正在开发一个使用 Volley 进行异步请求和图像缓存的 Android 项目。即使我将重试策略设置为 0,请求也会以某种方式访问​​服务器两次。我尝试覆盖 DefaultRetryPolicy 对象中的值但没有成功。下面是一些示例代码:

请求:

@Override
public void gravarVendaMobile(final Usuario usuarioAutenticado, final AsyncCallback<String> callback) {
obterParametrosDeInicializacao().done(new DoneCallback<ParametrosDeInicializacao>() {
@Override
public void onDone(final ParametrosDeInicializacao param) {
requestQueue.add(setDefaultRetryPolicy(new StringRequest(
Method.POST,
urlPara(GRAVAR_VENDA_MOBILE, usuarioAutenticado.getFilial(), usuarioAutenticado.getCodigo()),
listener(callback),
//errorListener(R.string.could_not_load_produtos, callback)
new ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
callback.onError(new MessageCodeException(error.networkResponse.statusCode, error));
}
}
) {

@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<String, String>();
headers.put("Encoding", "UTF-8");
headers.put("Accept", "application/json");
headers.put("Content-type", "application/json; charset=UTF-8");
return headers;
}


}));
}
});
}

重试策略:

private Request<?> setDefaultRetryPolicy(Request<?> request) {
request.setRetryPolicy(new DefaultRetryPolicy(30000, 0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

return request;
}

基本上,我想将超时设置为 30 秒,重试 0 次。

如果我增加重试次数,它会按预期工作,但如果我将其设置为 0,它会发出 2 个请求。

在这里需要一些帮助。

编辑

我设法通过在 android 中将 keep-alive 属性设置为 false 来解决我的问题。例如:

System.setProperty("http.keepAlive", "false");

我在导入 requestqueue 并发出请求的类中添加了这行代码。

另外,检查您的服务器是否有 keep-alive header 。

这个 post帮助找到了解决方案。

最佳答案

DefaultRetryPolicy.class 的 hasAttemptRemaining() 类如下所示:

protected boolean hasAttemptRemaining() {
return this.mCurrentRetryCount <= this.mMaxNumRetries;
}

据我所见,如果尚未进行重试,将 maxNumRetries 设置为 0 仍会使其返回 true。

我用

修复了它
request.setRetryPolicy(new DefaultRetryPolicy(0, -1, 0);

关于当重试策略设置为 0 时,Android Volley 向服务器发出 2 个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26264942/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com