我尝试使用扩展JsonRequest类的自定义类,使用POST和参数发送JSONArrayRequest。
public class MethodJsonArrayRequest extends JsonRequest<JSONArray> {
public MethodJsonArrayRequest(int method, String url, JSONObject params, com.android.volley.Response.Listener<org.json.JSONArray> listener, ErrorListener errorListener) {
super(method, url, params.toString(), listener, errorListener);
Log.d("method", Integer.toString(method));
Log.d("jsonRequest", params.toString());
}
@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));
}
}
}
我的日志会返回:
D/method﹕ 1
D/jsonRequest﹕ {"idShow":"219"}
我已将此信息传递给我的自定义类,并使用此snippit:
...
JSONObject params = new JSONObject();
try {
params.put("idShow", idShow);
}
catch (JSONException e) {Log.d("JSON e", e.getMessage()); }
MethodJsonArrayRequest episodeRequest = new MethodJsonArrayRequest(Request.Method.POST, episodeURL, params, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray myResponse) {
try {
Log.d("myResponse", myResponse.toString());
...
myResponse的日志:
D/myResponse﹕ []
但是无论出于什么原因它都没有返回任何东西,我觉得我可能没有为帕拉马传递正确的东西,但我不确定,任何帮助都非常感谢!如果我在这里没有提供可能有用的内容,请告诉我。
答案 0 :(得分:0)
user98239820回答here非常有用。他扩展了JsonRequest<JSONArray>
类,而不是扩展Request
类。我还必须将他的new JSONObject
更改为new JSONArray
以满足我的需求,但通过指向该课程可以完美地运作。