【发布时间】:2019-09-02 01:32:14
【问题描述】:
当我点击 URL 以使用 volley 从服务器获取响应时,在获取网络期间断开了连接。
我的问题是如何在重新连接互联网连接后从服务器获取数据,而无需再次点击 url
private void PostRequest(String Url) {
mRequest = new ServiceRequest(HomeActivity.this);
mRequest.makeServiceRequest(Url, Request.Method.GET, null, new ServiceRequest.ServiceListener() {
@Override
public void onCompleteListener(String response) {
Log.d("reponse", response);
JSONObject object = new JSONObject(response);
}
@Override
public void onErrorListener() {
indicator.setVisibility(View.GONE);
}
});
public void makeServiceRequest(final String url, int method, final
HashMap<String, String> param,ServiceListener listener) {
this.mServiceListener=listener;
stringRequest = new StringRequest(method, url, new Response.Listener<String>
() {
@Override
public void onResponse(String response) {
try {
mServiceListener.onCompleteListener(response);
} catch (Exception e) {
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
try {
if (error instanceof TimeoutError || error instanceof
NoConnectionError) {
} else if (error instanceof AuthFailureError) {
} else if (error instanceof ServerError) {
} else if (error instanceof NetworkError) {
} else if (error instanceof ParseError) {
}
} catch (Exception e) {
}
mServiceListener.onErrorListener();
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return param;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<String, String>();
return headers;
}
};
//to avoid repeat request Multiple Time
DefaultRetryPolicy retryPolicy = new DefaultRetryPolicy(0, -1,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
stringRequest.setRetryPolicy(retryPolicy);
stringRequest.setRetryPolicy(new DefaultRetryPolicy(30000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
stringRequest.setShouldCache(false);
AppController.getInstance().addToRequestQueue(stringRequest);
}
}
请提供建议,在点击网址之前我已检查互联网连接
【问题讨论】:
-
你必须重新提出要求,没有别的办法。也许您会问如何在没有用户交互的情况下自动完成?
-
您可以在 volley 库中使用重试策略。
-
我不知道 volley 但是
Retrofit有缓存机制。您可以搜索 volly 的事物类型
标签: android android-volley network-connection