[Android] 開源框架 Volley 自定義 Request

今天在看Volley demo (https://github.com/smanikandan14/Volley-demo), 發現自定義GsonRequest那塊代碼不全, 在這裏貼一個全的。git

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的做用。github

mJavaClass是在經過Json反序列化成對象時使用;json

mListener裏面onResponse是處理正確返回值的回調函數;ide

 

具體的實現也能夠參考Volley中JsonRequest類。函數

相關文章
相關標籤/搜索