我正在使用android volley,我想用stringRequest发送帖子数据。 但是param并没有发送到服务器。这是我的代码:
StringRequest jsonObjReq = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Volley Error: " + error.getMessage());
}
})
{
@Override
protected Map<String, String> getParams() {
params = new HashMap<String, String>();
params.put("tag", "openApp");
Log.d("Params", params + "");
return params;
}
};
jsonObjReq.setShouldCache(false);
AppController.getInstance().addToRequestQueue(jsonObjReq);
我不知道有什么不对?
答案 0 :(得分:2)
而不是getParams
,您应该使用getBody
作为POST请求。
您可以参考我的以下工作示例代码(由您替换我的JSONObject
和Url)。希望这有帮助!
...
try {
RequestQueue queue = Volley.newRequestQueue(this);
jsonBody = new JSONObject();
jsonBody.put("Title", "Android Volley POST DATA Demo");
jsonBody.put("Author", "BNK");
jsonBody.put("Date", "2015/11/01");
requestBody = jsonBody.toString();
StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// do something...
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// do something...
}
}) {
@Override
public String getBodyContentType() {
return "application/json; charset=utf-8";
}
@Override
public byte[] getBody() throws AuthFailureError {
try {
return requestBody == null ? null : requestBody.getBytes("utf-8");
} catch (UnsupportedEncodingException uee) {
e.printStackTrace();
return null;
}
}
};
queue.addToRequestQueue(stringRequest);
} catch (JSONException e) {
e.printStackTrace();
}
...
答案 1 :(得分:0)
是的,错误是关于服务器的,我的代码是正确的。