【发布时间】:2013-11-14 15:04:49
【问题描述】:
我目前正在尝试通过 Google Volley 向我的服务器发送一个简单的 POST 请求。 因此,我编写了以下代码行:
Map<String, String> params = new HashMap<String, String>();
params.put("regId", "skdjasjdaljdlksajskl");
JSONObject object = new JSONObject(params);
JsonObjectRequest request = new JsonObjectRequest(Method.POST,
"address_of_my_server/method", object,
successListener, errorListener);
queue.add(request);
但是我得到一个错误 500 返回,它表示缺少参数 (regId)。我用 GET-Request 尝试了同样的方法,但得到了相同的结果。
仅当我使用带有格式 URL(如“address_of_my_server/method?regId=sadlasjdlasdklsj”)的 StringRequest 时,服务器才会回复 200。
当我使用 StringRequest 时,我得到完全相同的结果:
StringRequest request = new StringRequest(Method.POST,
"myurl", successListener,
errorListener){
@Override
protected Map<String, String> getParams()
throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("regId", "skdjasjdaljdlksajskl");
return params;
}
};
为什么 Volley 会忽略我的参数?
【问题讨论】:
-
按照设计,参数不是总是在 URL 中传递吗?我认为 JSON 对象是请求的数据部分
-
嗯..你可能是对的。但是我的 StringRequest 不应该将这些参数自动添加到 URL 中吗?
-
看起来参数只在 POST 请求中发送,而不是像你提到的那样在 GET 中发送,你尝试过吗?
-
服务器上的
regId是否接受字符串?看起来它需要一个整数。
标签: android http-post android-volley