[Android] 开源框架 Volley 自定义 Request
今天在看Volley demo (https://github.com/smanikandan14/Volley-demo), 发现自定义GsonRequest那块代码不全, 在这里贴一个全的。
public class GsonRequest<T> extends Request<T> { private Gson mGson; private Class mJavaClass; private Response.Listener<T> mListener; public GsonRequest(int method, String url, Class<T> cls, String requestBody, Response.Listener<T> slistener, Response.ErrorListener listener) { super(method, url, listener); mJavaClass = cls; mListener = slistener; mGson = new Gson(); } @Override protected Response<T> parseNetworkResponse(NetworkResponse response) { try { String jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); T parsedGSON = (T) mGson.fromJson(jsonString, mJavaClass); return Response.success(parsedGSON, HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } catch (JsonSyntaxException je) { return Response.error(new ParseError(je)); } } @Override protected void deliverResponse(T response) { mListener.onResponse(response); }
简单说明一下几个fields的作用。
mJavaClass是在通过Json反序列化成对象时使用;
mListener里面onResponse是处理正确返回值的回调函数;
具体的实现也可以参考Volley中JsonRequest类。