[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类。

posted @ 2014-09-11 10:33  lemon_bar  阅读(310)  评论(0编辑  收藏  举报