[Android] 开源框架 Volley 自定义 Request

时间:2022-03-11 01:42:06

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