Volley 简单封装调用超简单

实用volley 已经有一段时间了,觉得每次都去实例化一个方法感觉代码重复量大,于是对volley做了些封装提高代码的复用性

首先我们创建一个抽象类:

做网络监听:

/**
 * Volley 请求监听
 */
public abstract class VolleyInterface
{
 // Volley监听类
 public Response.Listener<String> mListener;
 public Response.ErrorListener mErrorListener;
 public VolleyInterface()
 {
  loadingListener();
  errorListener();
 }
 /**
  * 链接服务器成功
  */
 public abstract void onMySuccess(String result);
 /**
  * 链接服务器失败
  */
 public abstract void onMyError(VolleyError error);
 // 实例化成功监听传人成功返回数据
 public Response.Listener<String> loadingListener()
 {
  if (null == mListener)
  {
   this.mListener = new Response.Listener<String>()
   {
    @Override
    public void onResponse(String response)
    {
     onMySuccess(response);
    }
   };
  }
  return mListener;
 }
 // 实例化失败监听传人失败返回值
 public Response.ErrorListener errorListener()
 {
  if (null == mErrorListener)
  {
   this.mErrorListener = new Response.ErrorListener()
   {
    @Override
    public void onErrorResponse(VolleyError error)
    {
     onMyError(error);
    }
   };
  }
  return this.mErrorListener;
 }


下面是实际调用方法

新建一个抽象类VolleyRequest 代码如下

public abstract class VolleyRequest
{
 private static StringRequest stringRequest;
 /**
  * VOLLEY GET 请求
  *
  *
  * @param url
  *            请求地址
  *
  * @param tag
  *            任务标识
  *
  * @param vif
  *            请求监听
  *
  */
 public static void RequestGet(String url, VolleyInterface vif)
 {
  // 防止重复请求,所以先取消tag标识的请求队列
  stringRequest = new StringRequest(Request.Method.GET, url, vif.loadingListener(), vif.errorListener());
  ExampleApplication.getInstance().getRequestQueue().add(stringRequest);
 }
 /**
  * VOLLEY POST 请求
  *
  *
  * @param url
  *            请求地址
  * @param params
  *            键值对
  * @param vif
  *            请求监听
  *
  */
 public static void RequestPost(String url, final Map<String, String> params, VolleyInterface vif)
 {
  // 防止重复请求,所以先取消tag标识的请求队列
  stringRequest = new StringRequest(Request.Method.POST, url, vif.loadingListener(), vif.errorListener())
  {
   @Override
   protected Map<String, String> getParams() throws AuthFailureError
   {
    return params;
   }
  };
  ExampleApplication.getInstance().getRequestQueue().add(stringRequest);
 }
}

最后是实际应用 这里以post请求为例

Map<String, String> map = new HashMap<>();
  map.put("", "");

VolleyRequest.RequestPost(httpurl, map, new VolleyInterface() {
   @Override
   public void onMySuccess(String result) {
    if (null != result) {
     String json = null;
     // 替换反斜杠
     json = result.replace("\\", "");
     // 取掉引号
     json = json.substring(1, json.length() - 1);
     Log.e("应用", json);
     // // FIXME 获取推送功能列表
     new FunctionAT(null).getFunctionList();
     // 小圆点
     setXiaoYuanDian();
     // 极光推送
     initPush();
     // 获得好友
     initFriend();
     doSuccess(json);
    }
   }
   @Override
   public void onMyError(VolleyError error) {
    // TODO Auto-generated method stub
    initThisApplyData();
   }
  });

ExampleApplication 类逻辑
private RequestQueue requestQueue;
private static ExampleApplication sInstance; // 当前对象


@Override
 public void onCreate() {
  super.onCreate();
  ExampleApplication.sInstance = this;
 }
tQueue requestQueue;

public static synchronized ExampleApplication getInstance() {
  return sInstance;
 }


/**
  * Volley
  *
  * @return 返回RequestQueue
  */
 public RequestQueue getRequestQueue() {
  if (requestQueue == null) {
   requestQueue = Volley.newRequestQueue(getApplicationContext());
  }
  return requestQueue;
 }

好了大功告成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值