我在排球图书馆工作:http://developer.android.com/training/volley/index.html
获取和'发布没有参数的方法'正常工作 . 但是当给出参数时,volley不执行表单,并且表单本身就像jsonObject:
com.android.volley.ParseError:org.json.JSONException:类型java.lang.String的值Login <无法转换为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
1 回答
当您使用
JsonObjectRequest
时,您说您发布的内容是JSON Object
,您期望的回复也将是JSONObject
. 如果这些都不是真的,您需要构建自己的Request<T>
并设置所需的值 .您看到的错误是因为来自服务器的响应不是有效的JSON响应 .