为了账号安全,请及时绑定邮箱和手机立即绑定

感觉老师这个二次封装有些复杂,下面是我做的简化版本。

public abstract class VolleyListener {

    public abstract void onSuccess(String result);
    public abstract  void onError(VolleyError error);

    public Response.Listener<String> loadingListener(){
        Response.Listener<String> listener = new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                onSuccess(response);
            }
        };
        return listener;
    }

    public Response.ErrorListener getErrorListener(){
        Response.ErrorListener errorListener = new Response.ErrorListener(){

            @Override
            public void onErrorResponse(VolleyError error) {
                onError(error);
            }
        };
        return errorListener;
    }
}


Request封装

public class VolleyRequest {

    private static StringRequest stringRequest;

    //有全局RequestQueue的GET请求

    public static void requestGlobalGET(String url,String tag,VolleyListener listener){
        BaseApplication.getRequestQueue().cancelAll(tag);
        stringRequest = new StringRequest(Request.Method.GET,url,listener.loadingListener(),listener.getErrorListener());
        stringRequest.setTag(tag);
        BaseApplication.getRequestQueue().add(stringRequest);
    }

    //有全局RequestQueue的POST请求

    public static void requestGlobalPOST(String url,String tag,VolleyListener listener){
        BaseApplication.getRequestQueue().cancelAll(tag);
        stringRequest = new StringRequest(Request.Method.POST,url,listener.loadingListener(),listener.getErrorListener());
        stringRequest.setTag(tag);
        BaseApplication.getRequestQueue().add(stringRequest);
    }

    //无全局RequestQueue的GET请求

    public static void requestGET(Context context,String url,String tag,VolleyListener listener){
        RequestQueue queue = Volley.newRequestQueue(context);
        stringRequest = new StringRequest(Request.Method.GET,url,listener.loadingListener(),listener.getErrorListener());
        stringRequest.setTag(tag);
        queue.add(stringRequest);
    }

    //无全局RequestQueue的GET请求

    public static void requestPOST(Context context,String url,String tag,VolleyListener listener){
        RequestQueue queue = Volley.newRequestQueue(context);
        stringRequest = new StringRequest(Request.Method.POST,url,listener.loadingListener(),listener.getErrorListener());
        stringRequest.setTag(tag);
        queue.add(stringRequest);

    }

}


调用

//有全局requestqueue无需加this,否则要加上下文
VolleyRequest.requestGET(this,"http://www.baidu.com","get",new VolleyListener() {
    @Override
    public void onSuccess(String result) {
        Log.i("TAG", result);
    }

    @Override
    public void onError(VolleyError error) {
        Log.i("TAG", error.getMessage());
    }
});







正在回答

举报

0/150
提交
取消
Android-Volley详解
  • 参与学习       33567    人
  • 解答问题       64    个

最热门网络框架~快速入门大法,还等什么,快来学习吧

进入课程

感觉老师这个二次封装有些复杂,下面是我做的简化版本。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信