今天简单说下Volly框架的简单封装,包括请求头,请求body,请求方法等的简单封装,这篇是呼应上一篇的,呼应上一个的介绍使用

首先要说的就是VollyBean,都是get,set没啥解释的

import java.util.Map;/*** @author penguinfool* Volly通信请求类*/
public class VollyBean {int method;String url;Map<String, String> headers;Map<String, String> params;/*** 构造函数*/public VollyBean() {super();}/*** @param method 请求类型* @param url 请求地址* @param headers 请求头* @param params 请求参数*/public VollyBean(int method, String url, Map<String, String> headers,Map<String, String> params) {super();this.method = method;this.url = url;this.headers = headers;this.params = params;}/*** @return 请求类型*/public int getMethod() {return method;}/*** @param method 请求类型*/public void setMethod(int method) {this.method = method;}/*** @return 请求地址*/public String getUrl() {return url;}/*** @param url 请求地址*/public void setUrl(String url) {this.url = url;}/*** @return 请求头*/public Map<String, String> getHeaders() {return headers;}/*** @param headers 请求头*/public void setHeaders(Map<String, String> headers) {this.headers = headers;}/*** @return 请求参数*/public Map<String, String> getParams() {return params;}/*** @param params 请求参数*/public void setParams(Map<String, String> params) {this.params = params;}}

VollyRequestManager类,这里面封装了请求的方法,请求头等,他的请求成功和失败都是Volly框架中封装好的,我们可以自定义一个回调,将结果回调到我们所需的界面上

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Collections;
import java.util.Iterator;
import java.util.Map;import android.content.Context;import com.android.volley.AuthFailureError;
import com.android.volley.DefaultRetryPolicy;
import com.android.volley.Request.Method;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.rgsc.base.core.net.NetUtils;/*** @author penguinfool* 请求管理类*/
public class VollyRequestManager {private static final String TAG = "VollyRequestManager";private static volatile VollyRequestManager instance = null;private RequestQueue mRequestQueue = null;private static final int TIMEOUT = 5000;/*** @param context*            上下文*/private VollyRequestManager(Context context) {initRequestqueue(context);}/*** 初始化mRequestQueue* * @param context*            上下文*/public void initRequestqueue(Context context) {this.mRequestQueue = Volley.newRequestQueue(context);}/*** @param context*            上下文* @return 单例*/public static VollyRequestManager getInstance(Context context) {if (null == instance) {synchronized (VollyRequestManager.class) {if (null == instance) {instance = new VollyRequestManager(context);}}}return instance;}/*** @return 请求队列*/public RequestQueue getRequestQueue() {return this.mRequestQueue;}/*** @param url*            请求地址* @param headers*            请求头* @param params*            请求参数* @param successListener*            成功监听* @param errorListener*            失败监听* @throws UnsupportedEncodingException*             异常*/private void doGet(String url, final Map<String, String> headers,final Map<String, String> params,Response.Listener<String> successListener,Response.ErrorListener errorListener)throws UnsupportedEncodingException {String requestUrl = null;// 如果是GET请求,则请求参数在URL中if (params != null && !params.isEmpty()) {String param = urlEncode(params);requestUrl = url + "?" + param;} else {requestUrl = url;}System.out.println("### volley requet:" + url);StringRequest stringRequest = new StringRequest(Method.GET, requestUrl,successListener, errorListener) {// 设置头信息@Overridepublic Map<String, String> getHeaders() throws AuthFailureError {if (headers != null && !headers.isEmpty()) {return headers;} else {return Collections.emptyMap();}}// 为空时参数params传入null@Overrideprotected Map<String, String> getParams() throws AuthFailureError {return params;}};stringRequest.setRetryPolicy(new DefaultRetryPolicy(TIMEOUT,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));mRequestQueue.add(stringRequest);}/*** @param url*            请求地址* @param headers*            请求头* @param params*            请求参数* @param successListener*            成功监听* @param errorListener*            失败监听*/private void doPost(String url, final Map<String, String> headers,final Map<String, String> params,Response.Listener<String> successListener,Response.ErrorListener errorListener) {// L.i(TAG + "doPost", url);// for (Map.Entry<String, String> entry :headers.entrySet()) {// System.out.println("hkey= " + entry.getKey() + " and hvalue= " +// entry.getValue());// }////// for (Map.Entry<String, String> entry :params.entrySet()) {// System.out.println("pkey= " + entry.getKey() + " and pvalue= " +// entry.getValue());// }StringRequest stringRequest = new StringRequest(Method.POST, url,successListener, errorListener) {@Overrideprotected Map<String, String> getParams() throws AuthFailureError {return params;}@Overridepublic Map<String, String> getHeaders() throws AuthFailureError {if (headers != null && !headers.isEmpty()) {return headers;} else {return Collections.emptyMap();}}};stringRequest.setRetryPolicy(new DefaultRetryPolicy(TIMEOUT,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));mRequestQueue.add(stringRequest);}/*** @param url*            请求地址* @param headers*            请求头* @param params*            请求参数* @param successListener*            成功监听* @param errorListener*            失败监听* @throws Exception*             异常*/private void doPut(String url, final Map<String, String> headers,final Map<String, String> params,Response.Listener<String> successListener,Response.ErrorListener errorListener) {String requestUrl = null;/** if (params != null && !params.isEmpty()) { String param =* urlEncode(params); requestUrl = url + "?" + param; } else {* requestUrl = url; } L.i(TAG, requestUrl);*/StringRequest stringRequest = new StringRequest(Method.PUT, url,successListener, errorListener) {// 设置头信息@Overridepublic Map<String, String> getHeaders() throws AuthFailureError {if (headers != null && !headers.isEmpty()) {return headers;} else {return Collections.emptyMap();}}@Overrideprotected Map<String, String> getParams() throws AuthFailureError {return params;}};stringRequest.setRetryPolicy(new DefaultRetryPolicy(TIMEOUT,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));mRequestQueue.add(stringRequest);}/*** 缺省,不推荐使用*/private void doDelete() {// .......}/*** @param vollyBean*            请求bean* @param successListener*            成功监听* @param errorListener*            失败监听* @throws UnsupportedEncodingException*             异常*/public void request(VollyBean vollyBean,Response.Listener<String> successListener,Response.ErrorListener errorListener)throws UnsupportedEncodingException {if (NetUtils.isAvailable()) {switch (vollyBean.getMethod()) {case Method.GET:doGet(vollyBean.getUrl(), vollyBean.getHeaders(),vollyBean.getParams(), successListener, errorListener);break;case Method.POST:doPost(vollyBean.getUrl(), vollyBean.getHeaders(),vollyBean.getParams(), successListener, errorListener);break;case Method.PUT:doPut(vollyBean.getUrl(), vollyBean.getHeaders(),vollyBean.getParams(), successListener, errorListener);break;case Method.DELETE:doDelete();break;default:break;}} else {errorListener.onErrorResponse(null);}}/*** @param params*            请求参数* @return 进行urlEncode后的请求地址* @throws UnsupportedEncodingException*             异常*/private String urlEncode(Map<String, String> params)throws UnsupportedEncodingException {Iterator<String> iter = params.keySet().iterator();int i = 0;StringBuffer sb = new StringBuffer();while (iter.hasNext()) {String key = iter.next();String value = params.get(key);if (i != 0) {sb.append("&");}sb.append(key);sb.append("=");sb.append(URLEncoder.encode(value, "utf-8").toString());i++;}return sb.toString();}
}
/*** **/
public class VollyBeanFactory {private static VollyBeanFactory instance = new VollyBeanFactory();/*** 私有构造函数*/private VollyBeanFactory() {}/*** @return 单例*/public static VollyBeanFactory getInstance() {if (instance == null) {synchronized (VollyBeanFactory.class) {instance = new VollyBeanFactory();}}return instance;}/*** @param username*            用户名* @param pwd*            密码* @return 请求bean*/public VollyBean getLoginBean(String username, String pwd) {Map<String, String> params = new HashMap<String, String>();params.put(Constant.HTTP_PARAM_USERNAME, username);params.put(Constant.HTTP_PARAM_PWD, pwd);VollyBean vollyBean = new VollyBean();vollyBean.setMethod(Method.POST);// 设置请求方式SLog.console("请求地址:" + ServerConfig.getInstance().getServerUrl());vollyBean.setUrl(ServerConfig.getInstance().getServerUrl()); // 设置请求地址Map<String, String> header = new HashMap<String, String>();header.put("Content-Type", "application/x-www-form-urldecoded");vollyBean.setHeaders(header); // 设置请求头vollyBean.setParams(params); // 设置请求参数return vollyBean;}
}

接下来看下实际的调用

public void log(String username, String pwd,Response.Listener<String> successListener,Response.ErrorListener errorListener)throws UnsupportedEncodingException {VollyBean bean = VollyBeanFactory.getInstance().getLoginBean(username,pwd);man.request(bean, successListener, errorListener);}

Volly基本就是这个样子了,注意哈,Volly是有jar包的,上网上随便下载一个就行

Volly的简单封装相关推荐

  1. Android APP更新下载工具类——简单封装DownloadManager

    几乎所有APP都包含了检查更新功能,更新下载功能的实现方式常用的有两种:1.使用App网络框架的文件下载请求:2.使用自带的DownloadManager类:本文介绍第二种,简单封装一下Downloa ...

  2. 简单封装浏览器 cookie 工具类

    版权声明:本文首发 http://asing1elife.com ,转载请注明出处. https://blog.csdn.net/asing1elife/article/details/8265571 ...

  3. 小程序简单封装 request 请求

    我在这里做了详细的介绍 : 小程序简单封装 request 请求 转载于:https://www.cnblogs.com/biangz/p/9984340.html

  4. 简单封装 HTTP 请求

    2017-2-19 更新到第二版: 源码地址:http://git.oschina.net/sp42/ajaxjs/tree/master/ajaxjs-base/src/com/ajaxjs/net ...

  5. 【JDBC】实现对JDBC 连接的简单封装

    package util;import java.sql.Connection; import java.sql.DriverManager;/**** 实现对JDBC 的封装* @author mq ...

  6. Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池

    前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...

  7. ios开发之使用多文件上传的简单封装最原始的

    ios开发之使用多文件上传的简单封装最原始的 // // ViewController.m // 18-上传多个文件 // // Created by 鲁军 on 2021/2/13. //#impo ...

  8. Spring jdbc 对象Mapper的简单封装

    一般查询实体的时候,都需要这么使用/**      * 根据id查询      *       * @return      */     public Emp queryEmpById(Intege ...

  9. Google图片加载库Glide的简单封装GlideUtils

    Google图片加载库Glide的简单封装GlideUtils  

最新文章

  1. 把Nginx注册成Windows的系统服务
  2. iphone储存空间系统怎么清理_iPhone储存空间里其他占了几十GB,怎样彻底删除它?...
  3. 红外报警c语言,基于单片机的红外报警系统设计 (毕业论文).docx
  4. Testin云測试破7000万次:崩溃成90%手游应用质量难题
  5. selenium的定位方式
  6. matlab的数据类型ppt,MATLAB数据类型
  7. 路由器刷机教程图解_斐讯路由器K1/K2/K2P系列刷机流程图文教程
  8. NetVLAD: CNN architecture for weakly supervised place recognition 翻译
  9. 台式电脑 航嘉机箱 前面板耳机只有一边(左边)有声音 问题解决
  10. 快播宣称将转型关闭QVOD服务器
  11. 23位子网掩码是多少_23位子网掩码包含哪几个网段
  12. Pytho解析器的安装及配置
  13. openwrt和srun的两三事
  14. ITS Mobile Template interpretation failed. Template does not exist
  15. numpy均匀分布_Numpy的基本操作
  16. 存储芯片涨价:助芯片制造商美光科技业绩连超预期
  17. Dagger2的使用总结
  18. Content(内容)
  19. GPFS文件系统分析
  20. 企业发现数据泄露威胁时如何应对

热门文章

  1. 本地如何调试微信接口
  2. skew width_CSS3中的skew()属性
  3. Part 1 start network programming:chapter SIX: 基于UDP的服务器端/客户端
  4. 输出倒三角图案:在屏幕上显示如下倒三角图案
  5. SSM整合--简单的增删改查--修改用户信息
  6. java+登录window域认证网页_Java 实现 QQ 登陆
  7. 微信小程序前后台调用
  8. 软件开发(一)——软件开发的基础思考
  9. reaver使用方法
  10. Echarts-授人以鱼不如授人以渔