diff options
Diffstat (limited to 'core/src/main/java/com/android/volley/toolbox/JsonArrayRequest.java')
-rw-r--r-- | core/src/main/java/com/android/volley/toolbox/JsonArrayRequest.java | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/core/src/main/java/com/android/volley/toolbox/JsonArrayRequest.java b/core/src/main/java/com/android/volley/toolbox/JsonArrayRequest.java new file mode 100644 index 0000000..9f56746 --- /dev/null +++ b/core/src/main/java/com/android/volley/toolbox/JsonArrayRequest.java @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2011 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.volley.toolbox; + +import androidx.annotation.Nullable; +import com.android.volley.NetworkResponse; +import com.android.volley.ParseError; +import com.android.volley.Response; +import com.android.volley.Response.ErrorListener; +import com.android.volley.Response.Listener; +import java.io.UnsupportedEncodingException; +import org.json.JSONArray; +import org.json.JSONException; + +/** + * A request for retrieving a {@link JSONArray} response body at a given URL, allowing for an + * optional {@link JSONArray} to be passed in as part of the request body. + */ +public class JsonArrayRequest extends JsonRequest<JSONArray> { + + /** + * Creates a new request. + * + * @param url URL to fetch the JSON from + * @param listener Listener to receive the JSON response + * @param errorListener Error listener, or null to ignore errors. + */ + public JsonArrayRequest( + String url, Listener<JSONArray> listener, @Nullable ErrorListener errorListener) { + super(Method.GET, url, null, listener, errorListener); + } + + /** + * Creates a new request. + * + * @param method the HTTP method to use + * @param url URL to fetch the JSON from + * @param jsonRequest A {@link JSONArray} to post with the request. Null 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 JsonArrayRequest( + int method, + String url, + @Nullable JSONArray jsonRequest, + Listener<JSONArray> listener, + @Nullable ErrorListener errorListener) { + super( + method, + url, + jsonRequest != null ? jsonRequest.toString() : null, + 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)); + } + } +} |