Volley网络请求的简单封装使用

Volley提供了JsonObjectRequest、JsonArrayRequest、StringRequest等Request形式。
JsonObjectRequest:返回JSON对象。
JsonArrayRequest:返回JsonArray。
StringRequest:返回String,这样可以自己处理数据,更加灵活。
这里我就把StringRequest简单进行二次封装,方便在代码中调用;
省去代码中 new对象,加入队列,设置tag的步骤

全局的application中创建一个请求队列

queue = Volley.newRequestQueue(getApplicationContext());

,暴露出来,这样不用每次都创建网络请求队列,节省资源

/**
     * 返回全局的请求队列
     * @return
     */
    public static RequestQueue getHttpQueues() {
        return queue;
    }

封装一个get请求和post请求的工具类:

public class VolleyRequest {
    public static StringRequest stringRequest;
    public static Context mContext;

    public static void RequestGet(Context mContext, String url, String tag,
            VolleyInterface vif) {
        stringRequest = new StringRequest(Method.GET, url,
                vif.loadingListener(), vif.errorListener());
        // 设置标签
        stringRequest.setTag(tag);
        // 加入队列
        BaseApplication.getHttpQueues().add(stringRequest);
    }

    public static void RequestPost(Context mContext, String url, String tag,
            final Map<String, String> params, VolleyInterface vif) {

        stringRequest = new StringRequest(Method.POST, url,
                vif.loadingListener(), vif.errorListener()) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                return params;
            }
        };
        // 设置标签
        stringRequest.setTag(tag);
        // 加入队列
        BaseApplication.getHttpQueues().add(stringRequest);
    }
}

重写属于自己 成功和失败的回调监听接口:

public abstract class VolleyInterface {
    public Context mContext;
    public static Listener<String> mListener;
    public static ErrorListener mErrorListtener;

    public VolleyInterface(Context context) {
        this.mContext = context;
    }

    public abstract void onMySuccess(String result);

    public abstract void onMyError(VolleyError error);

    public Listener<String> loadingListener() {
        mListener = new Listener<String>() {

            @Override
            public void onResponse(String result) {
                onMySuccess(result);
            }
        };
        return mListener;
    }

    public ErrorListener errorListener() {
        mErrorListtener = new ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                onMyError(error);
            }
        };
        return mErrorListtener;
    }
}

代码中的使用方法
先贴一下get的使用

    String url= "www.baidu.com";
    VolleyRequest.RequestGet(getApplicationContext(), url, "join", new VolleyInterface(getApplicationContext()) {

        @Override
        public void onMySuccess(String result) {
            ToastUtils.showToast(getApplicationContext(), "提交成功 ");

        }

        @Override
        public void onMyError(VolleyError error) {
            ToastUtils.showToast(getApplicationContext(), "提交失败,检查您的网络 ");
        }
    });

设置tag是为了关联你的生命周期,在生命周期销毁的时候,通过tag取消网络请求.

接下来是post请求


        Map<String, String> params = new HashMap<String , String>();
        VolleyRequest.RequestPost(getApplicationContext(), url, "tag", params, new VolleyInterface(getApplicationContext()) {

            @Override
            public void onMySuccess(String result) {
                // 成功的回调

            }

            @Override
            public void onMyError(VolleyError error) {
                //失败的

            }
        });

post请求需要一个map集合来添加传的参数,

参数集合

public class RequestUtils {

    public static Map<String,String> getParams(){
        Map<String , String> params = new HashMap<String, String>();
//      params.put("os", "android");
//      params.put("token", Global.token);
        return params;
    }
}

简单封装使用,具体封装实现,还要根据业务来实现

猜你喜欢

转载自blog.csdn.net/zane_xiao/article/details/50809889