尝试在没有用户参与的情况下一个接一个地执行请求时遇到问题。 运行应用程序时,我可以看到此日志
Posting params: {email=xxxxx@gmail.com, tag=getConnectors}
verifyOperation onResponse --> 1 operation
verifyOperation onResponse --> {"result":"85","msg":"ok, user register, your password is your number phone!"}
response 1 operation is ok call -->getConnectors
Posting params: {email=xxxxx@gmail.com, tag=geinfodates}
verifyOperation onResponse --> 2 operation
verifyOperation onResponse -->{"result":"85","msg":"ok, user register, your password is your number phone!"}
但是当调试app时,2操作的结果是正确的:
Posting params: {email=xxxxx@gmail.com, tag=geinfodates}
verifyOperation onResponse --> 2
verifyOperation onResponse -->{"token":"xxxxxxxx"}
我有一个单一类,我有我的StringRequest
与不同类型的听众
void verifyOperation(final HashMap paramOperation, final int opcion,final String url) {
pref = new PrefManager(context);
String urlFinale=url;
StringRequest strReq = new StringRequest(Request.Method.POST,
urlFinale, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
switch (opcion) {
case 1:
if (operation.result >= 0)
break;
case :2 .....
},新的Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Error: " + error.getMessage());
Toast.makeText(context,
error.getMessage(), Toast.LENGTH_SHORT).show();
}
}) {
@Override
protected Map<String, String> getParams() {
HashMap<String, String> profile = new HashMap<>();
Set set = paramOperation.entrySet();
Iterator iterator = set.iterator();
//String number=pref.getMobileNumber();
String mail = pref.getMail();
switch (opcion) {
case 1:
break;
case 2:
profile = pref.getUserDetails();
break;
}
最后将我的stringrequest添加到我的singlenton类来控制凌空请求
// Adding request to request queue
MyApplication.getInstance().addToRequestQueue(strReq);
public <T> void addToRequestQueue(Request<T> req) {
req.setTag(TAG);
req.setRetryPolicy(new DefaultRetryPolicy(
MY_SOCKET_TIMEOUT_MS,
-1, //intentos
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
getRequestQueue().add(req);
}
我使用默认参数RetryPolicy,但总是失败。 我不明白,因为我的第二个请求的答案可能只是第一个请求的答案,称为第二个操作我需要通过第一个响应 第二个调用永远不会返回与第一个调用相同的数据,如我调试时的日志中所示
谢谢!
答案 0 :(得分:0)
我不明白,因为有人给我投反对票......
我解决了我的问题。也许可以帮助我的解决方案。 排球有一个缓存 向队列添加请求时,可以禁用缓存 https://developer.android.com/intl/es/training/volley/simple.html 出于这个原因,当我调试时,我的应用程序工作正常,缓存应该被删除以便按时间(1-2秒进入请求),当我运行我的应用程序缓存工作并返回始终第一个响应。 您可以禁用缓存,这是一个示例 Disable Volley cache management