xia*_*woo 30 rest android http-post android-volley
我将JsonRequest发布到服务器.服务器很慢.Volley倾向于多次调用慢速服务器,因为它没有得到第一个请求的响应(因为我的服务器很慢).有没有办法禁止Volley重试请求,以便它可以收到第一个响应?
我试过了:
myRequest.setRetryPolicy(new DefaultRetryPolicy(
TIMEOUT_MS,
RETRIES,
BACKOFF_MULT));
Run Code Online (Sandbox Code Playgroud)
我已经替换了TIMEOUT_MS = 0,RETRIES = 0,甚至BACKOFF_MULT = 0,但它不起作用.
还有其他建议吗?
Dav*_*vid 45
排球默认重试政策是:
/** The default socket timeout in milliseconds */
public static final int DEFAULT_TIMEOUT_MS = 2500;
/** The default number of retries */
public static final int DEFAULT_MAX_RETRIES = 1;
/** The default backoff multiplier */
public static final float DEFAULT_BACKOFF_MULT = 1f;
Run Code Online (Sandbox Code Playgroud)
你可以在DefaultRetryPolicy.java中找到它,
所以你可以看到默认情况下凌空发出1次重试请求.
尝试使用较小的TIMEOUT(如果你不想等待2500ms),或者大于2500ms来获得答案),但保留其他值,例如:
// Wait 20 seconds and don't retry more than once
myRequest.setRetryPolicy(new DefaultRetryPolicy(
(int) TimeUnit.SECONDS.toMillis(20),
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Run Code Online (Sandbox Code Playgroud)
试试这个,
// remove caching
jsObjRequest.setShouldCache(false);
// Wait 30 seconds and don't retry more than once
jsObjRequest.setRetryPolicy(new DefaultRetryPolicy(0, 0,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Run Code Online (Sandbox Code Playgroud)
方法调用表单任务
public void callWebService(JSONObject jsonRequest) {
JsonObjectRequest jsObjRequest = new JsonObjectRequest(
Request.Method.POST, url + pageurl, jsonRequest,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject jsonObject) {
sendResponse(jsonObject);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
callBack.onError(error);
try {
if (progressDialog != null) {
progressDialog.dismiss();
progressDialog = null;
}
} catch (Exception e) {
Helper.customPrintStackTrace(e);
}
}
}
) {
@Override
public String getBodyContentType() {
return "application/json; charset=utf-8";
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put(WebConfig.WebParams.APIKEY, Helper
.getStringValuefromPrefs(context,
SharedPreferencesKey.PREF_APIKEY));
params.put(WebConfig.WebParams.APITOKEN, Helper
.getStringValuefromPrefs(context,
SharedPreferencesKey.PREF_APITOKEN));
if (!Helper.getStringValuefromPrefs(context,
SharedPreferencesKey.PREF_USERID).equals("")) {
params.put(WebConfig.WebParams.USER_ID, Helper
.getStringValuefromPrefs(context,
SharedPreferencesKey.PREF_USERID));
} else {
params.put(WebConfig.WebParams.USER_ID, "0");
}
return params;
}
};
// remove caching
jsObjRequest.setShouldCache(false);
// Wait 30 seconds and don't retry more than once
jsObjRequest.setRetryPolicy(new DefaultRetryPolicy(0, 0,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
// Access the RequestQueue through your singleton class.
VolleySingleton.getInstance(context).addToRequestQueue(jsObjRequest);
if (showDefultProcess) {
progressDialog.show();
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23127 次 |
最近记录: |