1d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru/* 2d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * Copyright (C) 2011 The Android Open Source Project 3d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * 4d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * Licensed under the Apache License, Version 2.0 (the "License"); 5d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * you may not use this file except in compliance with the License. 6d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * You may obtain a copy of the License at 7d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * 8d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * http://www.apache.org/licenses/LICENSE-2.0 9d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * 10d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * Unless required by applicable law or agreed to in writing, software 11d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * distributed under the License is distributed on an "AS IS" BASIS, 12d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * See the License for the specific language governing permissions and 14d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * limitations under the License. 15d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru */ 16d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 17d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Querupackage com.android.volley.toolbox; 18d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 19d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport com.android.volley.NetworkResponse; 20d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport com.android.volley.Request; 21d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport com.android.volley.Response; 22d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport com.android.volley.Response.ErrorListener; 23d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport com.android.volley.Response.Listener; 24d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 25d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queruimport java.io.UnsupportedEncodingException; 26d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 27d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru/** 28d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * A canned request for retrieving the response body at a given URL as a String. 29d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru */ 30d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Querupublic class StringRequest extends Request<String> { 31d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru private final Listener<String> mListener; 32d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 33d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru /** 34e48f4430bfd3030350aa5ba827b449c37e2fadc9Jean-Baptiste Queru * Creates a new request with the given method. 35e48f4430bfd3030350aa5ba827b449c37e2fadc9Jean-Baptiste Queru * 36e48f4430bfd3030350aa5ba827b449c37e2fadc9Jean-Baptiste Queru * @param method the request {@link Method} to use 37d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * @param url URL to fetch the string at 38d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * @param listener Listener to receive the String response 39d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru * @param errorListener Error listener, or null to ignore errors 40d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru */ 41e48f4430bfd3030350aa5ba827b449c37e2fadc9Jean-Baptiste Queru public StringRequest(int method, String url, Listener<String> listener, 42e48f4430bfd3030350aa5ba827b449c37e2fadc9Jean-Baptiste Queru ErrorListener errorListener) { 43e48f4430bfd3030350aa5ba827b449c37e2fadc9Jean-Baptiste Queru super(method, url, errorListener); 44d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru mListener = listener; 45d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 46d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 47e48f4430bfd3030350aa5ba827b449c37e2fadc9Jean-Baptiste Queru /** 48e48f4430bfd3030350aa5ba827b449c37e2fadc9Jean-Baptiste Queru * Creates a new GET request. 49e48f4430bfd3030350aa5ba827b449c37e2fadc9Jean-Baptiste Queru * 50e48f4430bfd3030350aa5ba827b449c37e2fadc9Jean-Baptiste Queru * @param url URL to fetch the string at 51e48f4430bfd3030350aa5ba827b449c37e2fadc9Jean-Baptiste Queru * @param listener Listener to receive the String response 52e48f4430bfd3030350aa5ba827b449c37e2fadc9Jean-Baptiste Queru * @param errorListener Error listener, or null to ignore errors 53e48f4430bfd3030350aa5ba827b449c37e2fadc9Jean-Baptiste Queru */ 54e48f4430bfd3030350aa5ba827b449c37e2fadc9Jean-Baptiste Queru public StringRequest(String url, Listener<String> listener, ErrorListener errorListener) { 55e48f4430bfd3030350aa5ba827b449c37e2fadc9Jean-Baptiste Queru this(Method.GET, url, listener, errorListener); 56e48f4430bfd3030350aa5ba827b449c37e2fadc9Jean-Baptiste Queru } 57e48f4430bfd3030350aa5ba827b449c37e2fadc9Jean-Baptiste Queru 58d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru @Override 59d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru protected void deliverResponse(String response) { 60d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru mListener.onResponse(response); 61d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 62d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru 63d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru @Override 64d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru protected Response<String> parseNetworkResponse(NetworkResponse response) { 65d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru String parsed; 66d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru try { 67d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); 68d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } catch (UnsupportedEncodingException e) { 69d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru parsed = new String(response.data); 70d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 71d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru return Response.success(parsed, HttpHeaderParser.parseCacheHeaders(response)); 72d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru } 73d56b88ae161057e848e7410d1b9ce5b0b8c427fcJean-Baptiste Queru} 74