![](/img/trans.png)
[英]Android Volley Library Works on Genymotion Emulator But always return timeouterror on device
[英]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.