Volley的简单封装

本文介绍了一个基于Volley库封装的网络请求类,包括GET和POST请求方式,并提供了请求取消的功能。该封装简化了Android应用中网络请求的操作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.StringRequest;
import com.xxx.xxxx.YiBanApplication;
import com.xxx.xxxx.Utils.UtilsTools;

import java.security.NoSuchAlgorithmException;
import java.util.Map;
import java.util.TreeMap;

public class VolleyClient {


    /**
     * @param requestTag    这个随便传,做为标记
     * @param urlFirst      访问地址前缀
     * @param urlLast       访问地址后缀
     * @param treeMap       要传的参数一个  TreeMap集合 (如何没有参数要上传,就上传null)
     * @param volleyRequest 传的是接口类,这个类里面必须实现两个方法,一个成功一个失败
     */
    public static void postRequestQueue(final String requestTag, String urlFirst, final String urlLast, final TreeMap<String, String> treeMap, VolleyRequest volleyRequest) {
        LogUtil.e("url --- ", urlFirst + urlLast);
        if (UtilsTools.isNetWorkConnected(MyApplication.getInstance().getContext())) {
            final RequestQueue requestQueue = MyApplication.getInstance().mVollyQueue;

            removeRequest(requestQueue, requestTag);
            final StringRequest request = new StringRequest(Request.Method.POST, urlFirst + urlLast, volleyRequest.getVolleyListener(), volleyRequest.getVolleyErrorListener()) {
                @Override
                protected Map<String, String> getParams() throws AuthFailureError {
                    TreeMap<String, String> map = new TreeMap<>();
                    if (treeMap != null) {
                        map = treeMap;
                    }
                    // 当前版本号
                    map.put("curVersion", UtilsTools.GetVersionName(MyApplication.getInstance().getContext()));
                    return map;
                }

//                @Override
//                protected Response<String> parseNetworkResponse(NetworkResponse response) {
//                    Map<String, String> responseHeaders = response.headers;
//                    if (requestTag.equals("apiLogin")) {
//                        String cookies = responseHeaders.get("Set-Cookie");
//                        //                        LogUtil.e("----------", "cookies --- " + cookies);
//                        SharedPrefUtil.putString(MyApplication.getInstance().getContext(), "cookies", cookies);
//                    }
//                    return super.parseNetworkResponse(response);
//                }
//
//                @Override
//                public Map<String, String> getHeaders() throws AuthFailureError {
//                    HashMap<String, String> map = new HashMap<>();
//                    map.put("Cookie", SharedPrefUtil.getString(MyApplication.getInstance().getContext(), "cookies", ""));
//                    //                    LogUtil.e("----------", "Cookie --- " + SharedPrefUtil.getString(MyApplication.getContext(), "cookies", ""));
//                    return map;
//                }
            };
            request.setRetryPolicy(new DefaultRetryPolicy(50000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
            request.setTag(requestTag);
            //        requestQueue.cancelAll(requestTag);
            requestQueue.add(request);
        } else {
            UtilsTools.MsgBox(MyApplication.getInstance().getContext(), MyApplication.getInstance().getContext().getString(R.string.network_disconnect));
        }
    }

    public static void getRequestQueue(final String requestTag, String urlFirst, final String urlLast, VolleyRequest volleyRequest) {
        LogUtil.e("url --- ", urlFirst + urlLast);
        RequestQueue requestQueue = MyApplication.getInstance().mVollyQueue;
        removeRequest(requestQueue, requestTag);
        if (UtilsTools.isNetWorkConnected(MyApplication.getInstance().getContext())) {
            StringRequest request = new StringRequest(Request.Method.GET, urlFirst + urlLast,
                    volleyRequest.getVolleyListener(), volleyRequest.getVolleyErrorListener());
            request.setTag(requestTag);
            requestQueue.add(request);
        } else {
            UtilsTools.MsgBox(MyApplication.getInstance().getContext(), MyApplication.getInstance().getContext().getString(R.string.network_disconnect));
        }
    }

    // 移除多余的请求
    private static void removeRequest(RequestQueue requestQueue, String requestTag) {
        requestQueue.cancelAll(requestTag);
    }

}

-

 

package com.xxx.xxxx.volley;

import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.xxx.xxxx.App.YiBanApplication;
import com.xxx.xxxx.R;
import com.xxx.xxxx.Utils.UtilsTools;

import java.util.TreeMap;

public abstract class VolleyRequest {
    /**
     * 返回的的Response
     *
     * @param s
     */
    protected abstract void onMyResponse(String s);

    /**
     * 访问错误返回
     *
     * @param volleyError
     */
    public void onMyErrorResponse(VolleyError volleyError) {
        UtilsTools.MsgBox(YiBanApplication.getContext(), YiBanApplication.getContext().getString(R.string.network_error));
    }


    /**
     * 成功
     *
     * @return
     */
    public Response.Listener getVolleyListener() {
        Response.Listener<String> listener = new Response.Listener<String>() {
            @Override
            public void onResponse(String s) {
                onMyResponse(s);
            }
        };
        return listener;
    }

    /**
     * 失败
     *
     * @return
     */
    public Response.ErrorListener getVolleyErrorListener() {
        Response.ErrorListener listener = new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                onMyErrorResponse(volleyError);
                UtilsTools.MsgBox(YiBanApplication.getContext(), YiBanApplication.getContext().getString(R.string.network_error));
            }
        };
        return listener;
    }


//       //获取Cookie的带参数post请求测试
//     Map<String, String> map = new HashMap<String, String>();
//     map.put("user_id", "1");
//     map.put("user_password", "1");
//
//     VolleyHelper.postRequestGetCookie(requestQueue, "ShareTo", "http://api.dev.housesaas.com/agent/user/list", map, new VolleyRequest() {
//    @Override protected void onMyResponse(String s) {
//    Log.e("noco", "" + s);
//    }
//
//    @Override protected void onMyErrorResponse(VolleyError volleyError) {
//
//    }
//    });

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值