package com.android.volley.toolbox;
import com.android.volley.NetworkResponse;
import com.android.volley.Request;
import com.android.volley.Response;
import com.google.gson.Gson;
import java.io.UnsupportedEncodingException;
/**
* Created by Aspsine on 2015/9/7.
*/
public class GsonRequest<T> extends Request<T> {
private Response.Listener<T> mListener;
private Class<T> mClazz;
private Gson mGson;
public GsonRequest(String url, Class<T> clazz, Response.Listener<T> listener, Response.ErrorListener errorListener) {
this(Method.GET, url, clazz, listener, errorListener);
}
public GsonRequest(int method, String url, Class<T> clazz, Response.Listener<T> listener, Response.ErrorListener errorListener) {
super(method, url, errorListener);
this.mListener = listener;
this.mClazz = clazz;
this.mGson = new Gson();
}
public GsonRequest(int method, String url, Response.ErrorListener listener) {
super(method, url, listener);
}
@Override
protected Response<T> parseNetworkResponse(NetworkResponse response) {
String parsed;
try {
parsed = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
} catch (UnsupportedEncodingException e) {
parsed = new String(response.data);
}
T t = mGson.fromJson(parsed, mClazz);
//TODO
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return Response.success(t, HttpHeaderParser.parseCacheHeaders(response));
}
@Override
protected void deliverResponse(T t) {
mListener.onResponse(t);
}
}