【发布时间】:2016-11-01 20:10:05
【问题描述】:
我正在尝试使用 volley notwork 库登录 'com.android.volley:volley:1.0.0'
如果我使用硬编码 json 对象参数,它工作正常,但万一从 EditText 获取值获取服务器错误
错误跟踪
11-01 17:07:10.937 8456-8750/com.furdo.android E/Volley: [277] BasicNetwork.performRequest: Unexpected response code 400 for https://url/
11-01 17:07:10.938 8456-8456/com.furdo.android D/Volley: [1] override.onErrorResponse: Furdo:Proceed
11-01 17:07:10.938 8456-8456/com.furdo.android W/System.err: com.android.volley.ServerError
11-01 17:07:10.938 8456-8456/com.furdo.android W/System.err: at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:163)
11-01 17:07:10.938 8456-8456/com.furdo.android W/System.err: at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112)
11-01 17:07:11.549 8456-8536/com.furdo.android E/Surface: getSlotFromBufferLocked: unknown buffer: 0xab6e9480
jsonObject.put("mobile_no", str_email_or_phone); // 从editText获取值不起作用 jsonObject.put("mobile_no", "9999999999"); // 硬代码工作
即使 String var="value" 也有同样的错误
String str_email_or_phone = et_enter_no_or_email.getText().toString().trim();
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("mobile_no", str_email_or_phone);// getting value from editText not working
jsonObject.put("mobile_no", "9999999999");// Hard code working
} catch (Exception ex) {
ex.printStackTrace();
}
if (jsonObject.length() >0) {
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST, Api.BASE_URL + Api.CHECK_USER, jsonObject,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(TAG, response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
// hide the progress dialog
}
}) {
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("Accept", "application/www.inception.v1");
params.put("Content-Type", "application/json");
return params;
}
};
// Adding request to request queue
MyApplication.getInstance().addToRequestQueue(jsonObjReq, "tag");
}
【问题讨论】:
-
问题明显出在参数上。调试时,初始化后
str_email_or_phone的值是多少? -
即使在创建 jsonObject 时也能获得正确的值。
-
这是一个基本的
Stringvar,所以它以某种方式影响请求是没有意义的。尝试通过调试客户端、登录服务器来找出这些请求之间的差异,甚至可以使用 Fiddler 来监控请求,但在我看来这有点矫枉过正。 -
显示错误跟踪?
-
添加错误跟踪请检查