重試策略設定為0時,Android Volley會向伺服器發出2個請求
我正在使用一個使用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");
我在類中添加了這行程式碼,我在那裡匯入請求佇列併發出請求.
另外,檢查您的伺服器是否具有保持活動頭.
這個ofollow,noindex" target="_blank">post 幫助瞭解決方案.