简单封装volley 实现快速调用

首先要依赖volley的库,网上有很多库,基本都可以使用,我选择的是

compile 'com.dubsmash.volley:library:2.0.1'

基本思路:将网络请求封装成一个工具类,需要使用的时候调用,通过接口将返回的数据传递出去

首先先写一个接口吧

public interface Interface_volley_respose {
    public void onSuccesses(String respose);//用来返回请求来的数据
    public  void onError(int error);
}

 

接着创建一个工具类

public class Volley_Utils {
//    DEPRECATED_GET_OR_POST = -1;
//    GET = 0;
//    POST = 1;
//    PUT = 2;
//    DELETE = 3;
//    HEAD = 4;
//    OPTIONS = 5;
//    TRACE = 6;
//    PATCH = 7;

    Interface_volley_respose mInterface;//通过有参构造方法实例化接口

    RequestQueue mQueue;
    StringRequest mStringRequest;




    public Volley_Utils(Interface_volley_respose mInterface) {
        this.mInterface = mInterface;
    }

    public void Http(String URL, final Context mContext, int Method) {
        mQueue = Volley.newRequestQueue(mContext);
        mStringRequest = new StringRequest(Method, URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {//这里response 是请求返回的数据
                if (response != null || response.length() != 0) {
                   
                   mInterface.onSuccesses(response);
                    
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                if (error.networkResponse != null) {
                    int code = error.networkResponse.statusCode;
                    mInterface.onError(code);
                }

            }
        }) {//重写方法 解决json返回乱码
            protected Response<String>  parseNetworkResponse(NetworkResponse response)
            {
                String string;
                try {
                    string = new String(response.data,"UTF-8");
                    return Response.success(string, HttpHeaderParser.parseCacheHeaders(response));
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                    return Response.error(new ParseError(e));
                }
        }
        };

        mQueue.add(mStringRequest);

    }

    public void postHttp(String URL, final Context mContext, int Method, final Map<String, String> map) {
        mQueue = Volley.newRequestQueue(mContext);

        mStringRequest = new StringRequest(Method, URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                if (response != null || response.length() != 0) {

                        mInterface.onSuccesses(response);
                
                }

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                if (error.networkResponse != null) {
                    int code = error.networkResponse.statusCode;
                    mInterface.onError(code);
                }

            }
        }) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {

                return map;
            }
        };
        mStringRequest.setRetryPolicy(new DefaultRetryPolicy(20 * 1000, 1, 1.0f));
        mQueue.add(mStringRequest);

    }


    public void volleyCancle() {//取消网络请求
        mStringRequest.cancel();
    }

}

最后直接调用 就可以 

举例:

 new Volley_Utils(new Interface_volley_respose() {
            @Override
            public void onSuccesses(String respose) {

               

            }

            @Override
            public void onError(int error) {

            }
        }).postHttp(Urls.Baseurl_cui + Urls.issuetask_zhaoshanghu, getActivity(), 1, map);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值