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

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


public abstract class GsonRequest extends Request {
	private MyLogger mylogger = MyLogger.getLogger(); 
	private final Listener mListener;
	private final ErrorListener mErrorListener;
	private Gson mGson;
	private Context mContext;
	private LoginBean loginBean;
	
	public GsonRequest(Context context,int method, String url,Listener 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 listener,
			ErrorListener errorListener) {		
		this(context,Method.GET, url, listener, errorListener);
		mylogger.d("请求url :: "+url);
	}
	@SuppressWarnings("unchecked")
	@Override
	protected Response parseNetworkResponse(NetworkResponse response) {
		try {			
			
			//解析数据
			String jsonString = new String(response.data,
					HttpHeaderParser.parseCharset(response.headers));			
			mylogger.d("返回json数据 :: "+jsonString);			
			return (Response) 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);            
        }
    }

	//访问参数
	
	@Override
	protected Map getParams() throws AuthFailureError {
		Map mParams = new HashMap();
		if (loginBean != null) {
			mParams.put("personId",loginBean.personId);
		}
		
		return mParams;
    }
	
	@Override
	public Map getHeaders() throws AuthFailureError {
		String token = "";
		if (loginBean != null) {
			token = loginBean.token;
		}
		Map headers = new HashMap();
		headers.put("Charset", "UTF-8");
		headers.put("token", token);
		return headers;
	}
	
	abstract public Type getDefineType();
}

你可能感兴趣的:(android移动开发,android,Request)