使用Volley框架网络请求Request<T>的封装

使用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();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值