我正在使用排球库:http://developer.android.com/training/volley/index.html
获取和'发布没有参数的方法'工作正常。但是当给出参数时,volley不执行表单,并且表单本身的行为是jsonObject:
com.android.volley.ParseError:org.json.JSONException:Value Login<类型java.lang.String无法转换为JSONObject
我已经尝试过覆盖getParams()方法:
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("username", username);
params.put("password", password);
return params;
}
使用参数:
实例化对象Map<String, String> params2 = new HashMap<String, String>();
params2.put("username", username);
params2.put("password", password);
JsonObjectRequest jsonObjectRequest1 = new JsonObjectRequest(Request.Method.POST, LOGIN_URL, new JSONObject(params2), new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
//onResponse
}
});
他们都没有奏效。我猜我的问题是关于内容类型。 Volley库使用application / json,而我的php代码使用名称 - 值对。
我见过这两个问题,但遗憾的是他们没有解决我的问题:
Google Volley ignores POST-Parameter
Volley Post JsonObjectRequest ignoring parameters while using getHeader and getParams
答案 0 :(得分:0)
当您使用JsonObjectRequest
时,您说您发布的内容是JSON Object
,您预期的回复也将是JSONObject
。如果这些都不是真的,那么您需要构建自己的Request<T>
并设置所需的值。
您看到的错误是因为服务器的响应不是有效的JSON响应。