पर सेट किया गया है, मैं एक एंड्रॉइड प्रोजेक्ट पर काम कर रहा हूं जो एसिंक अनुरोधों और छविकिंग के लिए वॉली का उपयोग करता है। किसी भी तरह से अनुरोध दो बार सर्वर पर दोबारा मार रहा है, भले ही मेरे पास रेट्री पॉलिसी 0 पर सेट हो। मैंने डिफ़ॉल्ट सफलतापूर्वक पॉलिसी ऑब्जेक्ट से मूल्यों को ओवरराइड करने की कोशिश की।एंड्रॉइड वॉली सर्वर पर 2 अनुरोध करता है जब नीति का पुन: प्रयास 0
अनुरोध:
@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;
}
असल में, मैं 0 पुनर्प्रयास के साथ 30 सेकेंड के समय समाप्ति सेट करना चाहते हैं यहां कुछ नमूना कोड है।
यदि मैं रीट्रीज़ की संख्या बढ़ाता हूं तो यह अपेक्षित काम करता है, लेकिन अगर मैं इसे 0 पर सेट करता हूं तो यह 2 अनुरोध करता है।
यहां कुछ मदद चाहिए।
संपादित
मैं झूठी अंदर एंड्रॉयड के लिए रखें जिंदा संपत्ति की स्थापना करके अपनी समस्या का समाधान करने में कामयाब रहे। उदाहरण:
System.setProperty("http.keepAlive", "false");
मैंने कक्षा के अंदर कोड की इस पंक्ति को जोड़ा जहां मैं अनुरोधक आयात करता हूं और अनुरोध करता हूं।
इसके अलावा, जांचें कि क्या आपके पास सर्वर के पास रहने वाले हेडर हैं या नहीं।
यह post समाधान प्राप्त करने में मदद मिली। या आप चाहते हैं के रूप में अधिक 20second को
myRequest.setRetryPolicy(new DefaultRetryPolicy(0,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
साथ यह तय हो तुम, एक अलग जवाब के रूप में अपने संपादित पोस्ट करना चाहिए, क्योंकि यह इस सवाल का आप देख रहे थे का हल (स्वयं जवाब अनुमति दी जाती है) है। –
मुझे एक ही समस्या का सामना करना पड़ रहा है। मैंने टाइमआउट को 60 सेकेंड तक बढ़ा दिया, क्योंकि रीट्रीज़ दो बार चलती रहती है, भले ही मेरे पास DefaultRetryPolicy (60000, 0, 0) है। क्यूं कर? – portfoliobuilder
यह निश्चित रूप से आपके मुद्दे का उत्तर नहीं है, लेकिन एक साइड इफेक्ट जो समस्या का कारण नहीं बनता है। 2 चीजें स्पष्ट नहीं हैं: 1) setDefaultRetry जिसे आपने चिपकाया है, उसे कहां और कब कहा जाता है जब वॉली की ImageRequest अपनी खुद की RetryPolicy 2 सेट करता है) जो http स्टैक का उपयोग करता है क्योंकि HURL कुछ समय के लिए okhttp का उपयोग कर रहा है और इसमें चुपचाप पुनः प्रयास है अनुरोध उन लोगों का उत्तर देने से वास्तव में यह पता चल सकता है कि यह क्यों हो रहा है – djodjo