使用自定义Volley POST不会返回任何内容

时间:2015-04-24 02:45:49

标签: android post android-volley

我尝试使用扩展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﹕ []

但是无论出于什么原因它都没有返回任何东西,我觉得我可能没有为帕拉马传递正确的东西,但我不确定,任何帮助都非常感谢!如果我在这里没有提供可能有用的内容,请告诉我。

1 个答案:

答案 0 :(得分:0)

user98239820回答here非常有用。他扩展了JsonRequest<JSONArray>类,而不是扩展Request类。我还必须将他的new JSONObject更改为new JSONArray以满足我的需求,但通过指向该课程可以完美地运作。