我尝试实现一个简单的异步http请求,将一些数据推送到服务器并使用响应。 但有时智能手机正在退出网络访问,而StringRequest因noConnectionError而停止。请求似乎已完成,重试规则不适用(无论是否添加自己的重试,都不会重试)。
StringRequest stringRequest = new StringRequest(Request.Method.POST, "http://myurl/test.php",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// Do something with the response
Toast.makeText(context, response, Toast.LENGTH_SHORT).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// Handle error
Toast.makeText(context, error.toString(), Toast.LENGTH_SHORT).show();
}
}) {
@Override
protected Map<String, String> getParams() {
return params;
}
@Override
protected VolleyError parseNetworkError(VolleyError volleyError) {
Log.d("DEBUG", "parseNetworkError");
return super.parseNetworkError(volleyError);
}
@Override
public void deliverError(final VolleyError error) {
Log.d("DEBUG", "deliverError");
}
};
stringRequest.setRetryPolicy(new MyRetryPolicy(20 * 1000, 5, 1.0f));
MyRetryPolicy:
@Override
public void retry(VolleyError error) throws VolleyError {
Log.d("DEBUG", ""+error);
// This is never getting called on NoConnectionError
}
日志记录告诉我“parseNetworkError”,然后告诉我“deliverError”。
但我不知道如何告诉他将请求保留在队列中,直到网络恢复并且请求可以通过服务器传递。
是否有人知道如何让它等待积极的回应并重新尝试直到得到它?
或者有没有比volley requestqueue更好的方法来创建asynchrounus http请求队列?