13713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick/* 23713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * Copyright (C) 2011 The Android Open Source Project 33713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * 43713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * Licensed under the Apache License, Version 2.0 (the "License"); 53713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * you may not use this file except in compliance with the License. 63713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * You may obtain a copy of the License at 73713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * 83713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * http://www.apache.org/licenses/LICENSE-2.0 93713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * 103713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * Unless required by applicable law or agreed to in writing, software 113713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * distributed under the License is distributed on an "AS IS" BASIS, 123713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * See the License for the specific language governing permissions and 143713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * limitations under the License. 153713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick */ 163713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick 173713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrickpackage com.android.volley.toolbox; 183713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick 193713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrickimport com.android.volley.NetworkResponse; 203713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrickimport com.android.volley.ParseError; 213713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrickimport com.android.volley.Response; 223713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrickimport com.android.volley.Response.ErrorListener; 233713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrickimport com.android.volley.Response.Listener; 243713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick 253713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrickimport org.json.JSONArray; 263713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrickimport org.json.JSONException; 273713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick 2865ba8a453a64cd8cedb176b26ab505711c46a89dFicus Kirkpatrickimport java.io.UnsupportedEncodingException; 2965ba8a453a64cd8cedb176b26ab505711c46a89dFicus Kirkpatrick 303713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick/** 313713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * A request for retrieving a {@link JSONArray} response body at a given URL. 323713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick */ 333713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrickpublic class JsonArrayRequest extends JsonRequest<JSONArray> { 343713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick 353713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick /** 363713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * Creates a new request. 373713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * @param url URL to fetch the JSON from 383713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * @param listener Listener to receive the JSON response 393713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick * @param errorListener Error listener, or null to ignore errors. 403713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick */ 413713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick public JsonArrayRequest(String url, Listener<JSONArray> listener, ErrorListener errorListener) { 423713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick super(url, null, listener, errorListener); 433713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick } 443713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick 453713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick @Override 463713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick protected Response<JSONArray> parseNetworkResponse(NetworkResponse response) { 473713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick try { 4865ba8a453a64cd8cedb176b26ab505711c46a89dFicus Kirkpatrick String jsonString = 4965ba8a453a64cd8cedb176b26ab505711c46a89dFicus Kirkpatrick new String(response.data, HttpHeaderParser.parseCharset(response.headers)); 5065ba8a453a64cd8cedb176b26ab505711c46a89dFicus Kirkpatrick return Response.success(new JSONArray(jsonString), 5165ba8a453a64cd8cedb176b26ab505711c46a89dFicus Kirkpatrick HttpHeaderParser.parseCacheHeaders(response)); 5265ba8a453a64cd8cedb176b26ab505711c46a89dFicus Kirkpatrick } catch (UnsupportedEncodingException e) { 5365ba8a453a64cd8cedb176b26ab505711c46a89dFicus Kirkpatrick return Response.error(new ParseError(e)); 543713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick } catch (JSONException je) { 553713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick return Response.error(new ParseError(je)); 563713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick } 573713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick } 583713094c56d25e25df2a508dbee4aea869ffdea1Ficus Kirkpatrick} 59