我需要使用JSONObject发出请求,如下所示:
{
'LangIDs': [1, 2],
'GenreIDs': [4],
'LowPrice': 0,
'HighPrice': 999,
'SearchTerms': [],
'Pagination': {
'PageNumber': 0,
'PageLength': 10
}
}
预期的响应是JSONArray。使用Volley,我无法使用JSONObject参数创建JsonArrayRequest。
在以这种方式发出请求之前:
StringRequest jsonObjectRequest = new StringRequest(Request.Method.POST, url, new Response.Listener < String > () {
@Override
public void onResponse(String response) {
JSONObject jsonObject;
int id;
String bookName;
String Url;
try {
responseArray = new JSONArray(response);
} catch (JSONException e) {
}
for (int i = 0; i < response.length(); i++) {
try {
jsonObject = responseArray.getJSONObject(i);
id = jsonObject.getInt(Constants.KEY_ID);
bookName = jsonObject.getString(Constants.KEY_BOOKNAME);
Url = imgUrl + jsonObject.getString(Constants.KEY_IMG_URL);
books.add(new Book(id, bookName, Url));
} catch (JSONException e) {
e.printStackTrace();
}
}
mAdapter.updateGrid(books);
Log.v("Response", response);
}
}, new Response.ErrorListener() {@
Override
public void onErrorResponse(VolleyError error) {
Log.e("Error:", error.getMessage());
}
}) {@
Override
protected Map < String, String > getParams() throws AuthFailureError {
HashMap < String, String > params = new HashMap < > ();
String message = getArguments().getString(Constants.KEY_FILTER_VALUES);
Log.v("FilterMessage", message);
params.put(Constants.KEY_PAGENUMBER, String.valueOf(0));
params.put(Constants.KEY_PAGELENGTH, String.valueOf(10));
return params;
}
};
但是现在是JSONObject包含JSONObject。
现在如何使用Volley发出此请求?
我创建了一个自定义齐射请求,该请求接受JSONObject作为参数。
CustomJsonArrayRequest.java
public class CustomJsonArrayRequest extends JsonRequest<JSONArray> {
/**
* Creates a new request.
* @param method the HTTP method to use
* @param url URL to fetch the JSON from
* @param jsonRequest A {@link JSONObject} to post with the request. Null is allowed and
* indicates no parameters will be posted along with request.
* @param listener Listener to receive the JSON response
* @param errorListener Error listener, or null to ignore errors.
*/
public CustomJsonArrayRequest(int method, String url, JSONObject jsonRequest,
Listener<JSONArray> listener, ErrorListener errorListener) {
super(method, url, (jsonRequest == null) ? null : jsonRequest.toString(), listener,
errorListener);
}
@Override
protected Response<JSONArray> parseNetworkResponse(NetworkResponse response) {
try {
String jsonString = new String(response.data,
HttpHeaderParser.parseCharset(response.headers, PROTOCOL_CHARSET));
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));
}
}
}
JSONObject body = new JSONObject();
// Your code, e.g. body.put(key, value);
CustomJsonArrayRequest req = new CustomJsonArrayRequest(Request.Method.POST, url, body, success, error);
问题内容: 我必须通过Volley Framework提出要求。这是带有JSONObject的POST请求。 我必须传递一个字符串和一个JSONArray ..但是我怎么能呢? 我从这个开始: 如果我尝试使用浏览器,则必须进行以下设置: 问题答案: 您需要先制作一个JSON数组,然后将其存储
在下面的代码中,当函数print_uart传输字符串“hello world”时,*s中到底收到了什么?是字符H还是存储字符串“hello world”的内存地址?
我的理解是,对于Spring数据JPA,我不能用一个查询方法来获取列等于给定的非空方法参数的所有行,也不能用相同的方法来获取方法参数为空时该列为空的所有行。 那是正确的吗? 所以我必须在我的JAVA代码中区分这一点,我必须使用一个单独的查询方法显式地请求空值,就像下面的例子一样? 这很糟糕,如果我有4个可能为空的参数,并且必须编码16种不同的查询方法。
错误:运算符不存在:uuid=bytea 有什么建议吗?
我试图使用JSON对象构造JSON字符串 我希望JSON字符串以这种方式构造 这是我的简单程序 它是这样构建的 我的问题是为什么它改变了属性的顺序 我可以有我想要的顺序吗?
问题内容: 我的理解是,对于Spring数据JPA,我无法使用查询方法来获取列等于给定非空方法参数的所有行,而当方法参数为null时,无法使用相同的方法来获取此列为NULL的所有行。 。 那是对的吗? 因此,我必须在我的JAVA代码中对此进行区分,并且必须使用单独的查询方法明确要求空值,如下面的示例所示? 不好的是,如果我有4个可以为null的参数,并且必须编写16种不同的查询方法。 问题答案: