今天在看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类。

相关文章:

  • 2022-02-10
  • 2021-10-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-03
  • 2021-10-24
猜你喜欢
  • 2021-11-01
  • 2021-09-24
  • 2021-09-16
  • 2021-08-04
  • 2022-12-23
相关资源
相似解决方案