【android框架】轻松拓展Volley-----传递map参数 管用否?

        因项目需求,发送http请求需要传递数据过去,因此重写了一下Volley这个框架的JsonArrayRequest和jsonObjectRequest。Volley 的扩展性还是蛮好的。

JsonArrayPostRequst.java

package com.jxlg.eddie.utils;

import java.io.UnsupportedEncodingException;
import java.util.Map;

import org.json.JSONArray;
import org.json.JSONException;

import com.android.volley.AuthFailureError;
import com.android.volley.NetworkResponse;
import com.android.volley.ParseError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.toolbox.HttpHeaderParser;

/**
 * 重写volley的JsonArrayRequest
 * @author Eddie
 *
 */
public  class JsonArrayPostRequst extends Request<JSONArray>{
	private Map<String,String> mMap;
	private Listener<JSONArray>  mListener;


	public JsonArrayPostRequst(String url,Listener<JSONArray> listener, ErrorListener errorListener,Map map) {
		super(Request.Method.POST, url, errorListener);
		mListener=listener;
		mMap=map;
		
		// TODO Auto-generated constructor stub
	}
	@Override
	protected Map<String, String> getParams() throws AuthFailureError {
		// TODO Auto-generated method stub
		return mMap;
	}

	   @Override
	    protected Response<JSONArray> parseNetworkResponse(NetworkResponse response) {
	        try {
	            String jsonString =
	                new String(response.data, HttpHeaderParser.parseCharset(response.headers));
	            return Response.success(new JSONArray(jsonString),
	                    HttpHeaderParser.parseCacheHeaders(response));
	        } catch (UnsupportedEncodingException e) {
	            return Response.error(new ParseError(e));
	        } catch (JSONException je) {
	            return Response.error(new ParseError(je));
	        }
	    }

	@Override
	protected void deliverResponse(JSONArray response) {
		mListener.onResponse(response);
		
	}

}


 JsonObjectPostRequest.java

package com.jxlg.eddie.utils;
import java.io.UnsupportedEncodingException;
import java.util.Map;

import org.json.JSONException;
import org.json.JSONObject;

import com.android.volley.AuthFailureError;
import com.android.volley.NetworkResponse;
import com.android.volley.ParseError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.Response.ErrorListener;
import com.android.volley.Response.Listener;
import com.android.volley.toolbox.HttpHeaderParser;

/**
 * 重写jsonObject
 * @author Eddie
 *
 */
public  class JsonObjectPostRequest extends Request<JSONObject>{
	private Map<String,String> mMap;
	private Listener<JSONObject>  mListener;


	public JsonObjectPostRequest(String url,Listener<JSONObject> listener, ErrorListener errorListener,Map map) {
		super(Request.Method.POST, url, errorListener);
		mListener=listener;
		mMap=map;
		
	}
	@Override
	protected Map<String, String> getParams() throws AuthFailureError {

		return mMap;
	}

	   @Override
	    protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
	        try {
	            String jsonString =
	                new String(response.data, HttpHeaderParser.parseCharset(response.headers));
	            return Response.success(new JSONObject(jsonString),
	                    HttpHeaderParser.parseCacheHeaders(response));
	        } catch (UnsupportedEncodingException e) {
	            return Response.error(new ParseError(e));
	        } catch (JSONException je) {
	            return Response.error(new ParseError(je));
	        }
	    }

	@Override
	protected void deliverResponse(JSONObject response) {
		mListener.onResponse(response);
		
	}

}


很简单,跟之前的一样用。关键是在后台如何接收参数,后台写的servlet 或者pringMVC得到HttpServletRequest对象,使用getparameter获取参数即可。

你可能感兴趣的:(【android框架】轻松拓展Volley-----传递map参数 管用否?)