使用Volley框架网络请求Request<T>的封装
public abstract class GsonRequest<T> extends Request<T> {
private MyLogger mylogger = MyLogger.getLogger();
private final Listener<T> mListener;
private final ErrorListener mErrorListener;
private Gson mGson;
private Context mContext;
private LoginBean loginBean;
public GsonRequest(Context context,int method, String url,Listener<T> listener,
ErrorListener errorListener) {
super(method, url, errorListener);
mGson = new Gson();
mContext = context;
mListener = listener;
mErrorListener = errorListener;
mylogger.d("请求url :: "+url);
loginBean = SharedPreferencesUtils.getObject(mContext, Preferences.LOGIN_RESPONSE, LoginBean.class);
}
public GsonRequest(Context context,String url, Listener<T> listener,
ErrorListener errorListener) {
this(context,Method.GET, url, listener, errorListener);
mylogger.d("请求url :: "+url);
}
@SuppressWarnings("unchecked")
@Override
protected Response<T> parseNetworkResponse(NetworkResponse response) {
try {
//解析数据
String jsonString = new String(response.data,
HttpHeaderParser.parseCharset(response.headers));
mylogger.d("返回json数据 :: "+jsonString);
return (Response<T>) Response.success(mGson.fromJson(jsonString, getDefineType()),
HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
}
}
//监听得到数据处理数据,监听者调用onResponse()处理数据
@Override
protected void deliverResponse(T response) {
mListener.onResponse(response);
}
@Override
public void deliverError(VolleyError error) {
mylogger.d("========错误信息=======");
if (TimeoutError.class.isInstance(error)) {
Toast.makeText(mContext, "网络不给力.", Toast.LENGTH_SHORT).show();
} else {
// Toast.makeText(mContext, "网络连接出错", Toast.LENGTH_SHORT).show();
}
if (mErrorListener != null) {
mErrorListener.onErrorResponse(error);
}
}
<span style="white-space:pre"> </span>//访问参数
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> mParams = new HashMap<String, String>();
if (loginBean != null) {
mParams.put("personId",loginBean.personId);
}
return mParams;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
String token = "";
if (loginBean != null) {
token = loginBean.token;
}
Map<String, String> headers = new HashMap<String, String>();
headers.put("Charset", "UTF-8");
headers.put("token", token);
return headers;
}
abstract public Type getDefineType();
}