0) Download Volley
2) File > New > Import module (Volley)
1) En el build.gradle de la app
dependencies {
compile project(":volley")
compile 'com.google.code.gson:gson:2.6.2'
...
}
4) Server class
public class Server {
private RequestQueue mRequestQueue;
private Context context;
private static class Holder {
static final Server INSTANCE = new Server();
}
public static Server getInstance() {
return Holder.INSTANCE;
}
private Server() {
}
public void initialize(Context context) {
this.context = context;
// Instantiate the cache
Cache cache = new DiskBasedCache(context.getCacheDir(), 1024 * 1024); // 1MB cap
// Set up the network to use HttpURLConnection as the HTTP client.
Network network = new BasicNetwork(new HurlStack());
// Instantiate the RequestQueue with the cache and network.
mRequestQueue = new RequestQueue(cache, network);
// Start the queue
mRequestQueue.start();
}
public void getHoroscope(Response.Listener responseListener, Response.ErrorListener errorListener) {
String url = "https://volley-test.herokuapp.com/volley";
JsonObjectRequest jsObjRequest = new JsonObjectRequest
(Request.Method.GET, url, null, new Response.Listener() {
@Override
public void onResponse(JSONObject response) {
Log.d("Server", "Response: " + response.toString());
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("Server", "Error: " + error.toString());
}
});
mRequestQueue.add(jsObjRequest);
}
}
5) GsonRequest class
public class GsonRequest6) Performing a GsonRequestextends Request { private final Gson gson = new Gson(); private final Class clazz; private final Map headers; private final Response.Listener listener; /** * Make a GET request and return a parsed object from JSON. * * @param url URL of the request to make * @param clazz Relevant class object, for Gson's reflection * @param headers Map of request headers */ public GsonRequest(String url, Class clazz, Map headers, Response.Listener listener, Response.ErrorListener errorListener) { super(Method.GET, url, errorListener); this.clazz = clazz; this.headers = headers; this.listener = listener; } @Override public Map getHeaders() throws AuthFailureError { return headers != null ? headers : super.getHeaders(); } @Override protected void deliverResponse(T response) { listener.onResponse(response); } @Override protected Response parseNetworkResponse(NetworkResponse response) { try { String json = new String( response.data, HttpHeaderParser.parseCharset(response.headers)); return Response.success( gson.fromJson(json, clazz), HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } catch (JsonSyntaxException e) { return Response.error(new ParseError(e)); } } }
c
No hay comentarios:
Publicar un comentario