簡體   English   中英

Android Volley 請求在模擬器中有效,但在設備中無效

[英]Android Volley request works in emulator but not in device

我有一個使用 POST 方法的凌空 StringRequest,請求能夠連接到設備和模擬器中的服務器,但是,請求需要以正確的順序提供參數才能工作,並且出於某種原因,模擬器確實按順序發送這些參數,但設備不發送。

為什么是這樣? 我能做些什么來避免這種情況嗎?

調試截圖: 在此處輸入圖像描述

我的字符串請求:

StringRequest xx = new StringRequest(Request.Method.POST, getAjaxUrlForFunction("Login"), new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Log.w("RESPONSE-=",response);
                callback.onSucces(response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                error.printStackTrace();
                callback.onError(error);
            }
        }){
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String,String> paramss = new HashMap<String, String>();
                paramss.put("funcion","login");
                paramss.put("ajax_request","controller");
                paramss.put("args[0]", name);
                paramss.put("args[1]", password);
                return paramss;
            }
        };

正如Andy所指出的並在此處解釋 HashMaps 不保留順序,但 LinkedHashMaps 保留了項目的插入順序,因此它在模擬器上工作而不在設備上工作的唯一原因是純粹的運氣。

使用LinkedHashMap后的工作請求參數

@Override
protected Map<String, String> getParams() throws AuthFailureError {
    //Map<String,String> paramss = new HashMap<String, String>();
    LinkedHashMap<String,String> paramss = new LinkedHashMap<>();
    paramss.put("funcion","login");
    paramss.put("ajax_request", "controller");
    paramss.put("args[0]", name);
    paramss.put("args[1]", password);
    Log.w("PARAMETERS",paramss.toString());
    return paramss;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM