我正在使用截击与API交互。我需要向返回JSON数组的服务发送post请求(带参数)。
JsonObjectRequest有一个构造函数,它接受一个方法和一组参数
JsonObjectRequest(int method, java.lang.String url, JSONObject jsonRequest, Response.Listener<JSONObject> listener, Response.ErrorListener errorListener)
但是JSONArrayRequest(我需要的一个)只有一个构造函数的形式
JsonArrayRequest(java.lang.String url, Response.Listener<JSONArray> listener, Response.ErrorListener errorListener)
我如何才能使其发送包含数据的POST请求?
此代码将生成您想要的内容
Volley.newRequestQueue(context).add(
new JsonRequest<JSONArray>(Request.Method.POST, "url/", null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("param1", "one");
params.put("param2", "two");
return params;
}
@Override
protected Response<JSONArray> parseNetworkResponse(
NetworkResponse response) {
try {
String jsonString = new String(response.data,
HttpHeaderParser
.parseCharset(response.headers));
return Response.success(new JSONArray(jsonString),
HttpHeaderParser
.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JSONException je) {
return Response.error(new ParseError(je));
}
}
});
我很懒,没有自己构建Volley库(只是使用了. jar),因此没有源代码...所以在匿名的新JSONArrayRequest中我添加了这些函数:
// NO CONSTRUCTOR AVAILABLE FOR POST AND PARAMS FOR JSONARRAY!
// overridden the necessary functions for this
@Override
public byte[] getBody() {
try {
return paramsArray.toString().getBytes("utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}
@Override
public int getMethod() {
return Method.POST;
}
他们可能稍后会添加它,但同时您可以自己添加所需的构造函数:
public JsonArrayRequest(int method, String url, JSONObject jsonRequest,
Listener<JSONArray> listener, ErrorListener errorListener) {
super(method, url, (jsonRequest == null) ? null : jsonRequest.toString(),
listener, errorListener);
}
这没有经过测试,尽管我看不出有什么理由不起作用,因为实现细节在超类中:JsonRequest
。
试试看它是否有效。
是我叫的!在我回答这个问题后,他们花了将近两年的时间,但是Volley团队在2015年3月19日将这个构造函数添加到回购中。你猜怎么着?这是精确的语法。
当我做POST请求调用使用JsonObjectRequest在凌空然后在某些wifi它是发送空的身体。但是它可以很好地处理StringRequest POST请求。它在所有移动网络上都运行良好。 我正在使用node。js服务器和expressjs/body解析器。当我使用邮递员发出邮件请求时,一切正常。 错误是什么?如果有人想看我能提供的代码。 使用StringRequest的POST请求 POS
我正在开发一个Android应用程序,它与我编写的RESTful web服务进行通信。对于方法使用是很棒的,也是很容易的,但是我不能把手指放在方法上。 我想发送一个请求,请求正文中包含一个,并检索web服务的原始响应(如、)。
我想用原始字符串发送帖子请求,而不是使用截击设置参数。 我已尝试覆盖StringRequest中的getBody方法,如下所示: 它甚至不会发送请求并给出错误:com。Android截击时间误差 任何帮助都将不胜感激。
用简单的话来说,我想发送这个数据到服务器,使用Volley Post Request。 它有一个整数和一个字符串,我得到的响应是Jsonarray 我尝试过以下方法,但都不管用 > 因为它是json数组请求,我不能在参数中发送数据,因为第三个参数只需要JsonArray,我必须发送JsonObject,所以保持为null 我不能把它放在中,因为值的1是整数,并且它只接受字符串 getparams(
我有curl请求从Android推送数据到服务器。下面是Curl请求: 我应该如何使用截击进行post请求?我很困惑,因为我不知道该放在哪里: 所以请任何人帮我完成这件事。任何答案都是可贵的。非常感谢。安静!
请求方式: "|3|2|url,content|\r" 参数: url 设置Post请求的url链接 content post请求的数据 返回值: "|3|code|data|\r" 参数: code http请求返回的成功或者错误码 成功:code = 200 获取数据失败:code = -1 http请求字段错误:code = 1 data http请求返回的数据 Arduino样例: sof