给自己留个记录 仅仅是请求数据的

import android.app.Dialog;
import android.content.Context;
import android.util.Log;import com.android.volley.DefaultRetryPolicy;
import com.android.volley.Request;
import com.android.volley.Response;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.mohism.jiayouchina.JiaYouApplication;import java.util.Map;import utils.GsonUtil;
import utils.StringUtil;/*** @author liugongce*/
public class HttpSender {private String mRequestUrl = "";private OnHttpResListener onHttpResListener;// 回调接口private String name = "http请求描述";// 请求描述private Object mRequestObj = null;private String firstCharForGetRequest = "?";private boolean isShowDialog;private Dialog dialog;private Context context;private String encoding ;public int connectTimeOut = 20 * 1000;private String tag;private MyStringRequest request = null;private Map<String, String> map;private int what;//给线程加标记// -------------------------------------------构造函数--------------------------------------------------------private HttpSender(Builder builder) {this.mRequestUrl = builder.mRequestUrl;this.onHttpResListener = builder.onHttpResListener;this.name = builder.name;this.mRequestObj = builder.mRequestObj;this.isShowDialog = builder.isShowDialog;this.context = builder.context;this.connectTimeOut = builder.connectTimeOut;this.encoding=builder.enCoding;this.what=builder.what;this.dialog=builder.dialog;this.tag = (builder.tag == null || builder.tag.equals("")) ? "abctag" : tag;}// -------------------------------------------------公开调用方法------------------------------------------/*** post请求*/public void sendPost() {if(NetUtils.isNetworkConnected(context)) {request(0);}else{if (onHttpResListener != null) {onHttpResListener.noInternet();}}}/*** get请求*/public void sendGet() {if(NetUtils.isNetworkConnected(context)) {//如果有网络request(1);}else {if (onHttpResListener != null) {onHttpResListener.noInternet();}}}// --------------------------------------------回调操作------------------------------------------------/*** 请求成功回调*/private Response.Listener<String> succListener = response -> {dismissDialog();if (onHttpResListener != null) {onHttpResListener.doSuccess(response,what);}};/*** 请求失败的回调*/private Response.ErrorListener errListener = error -> {dismissDialog();if (onHttpResListener != null) {onHttpResListener.otherError(error,what);}};// ------------------------------------------------请求操作----------------------------------------------private void request(int method) {if (StringUtil.isBlank(mRequestUrl)) {Log.i("Info", name + "POST请求 Url为空");return;}if (mRequestObj != null) {String json = GsonUtil.getInstance().toJson(mRequestObj);map = new Gson().fromJson(json, new TypeToken<Map<String, String>>() {}.getType());}if (method == 0) {//post请求
request = new MyStringRequest(com.android.volley.Request.Method.POST, mRequestUrl, succListener, errListener,encoding) {@Overrideprotected Map<String, String> getParams() {return map;}};Log.i("Info", "POST请求名称: " + name + "POST请求Url: "+ mRequestUrl.toString());if(map!=null) {for (Map.Entry<String, String> entry : map.entrySet()) {String key = entry.getKey().trim();String value = entry.getValue().toString().trim();Log.i("Info", "POST提交参数: " + key + " = " + value);//打印信息
                    }}} else {//get请求StringBuilder sb = new StringBuilder(mRequestUrl);if (mRequestUrl.contains("?")) {firstCharForGetRequest = "&";}sb.append(firstCharForGetRequest);if(map!=null) {for (Map.Entry<String, String> entry : map.entrySet()) {String key = entry.getKey().trim();String value = entry.getValue().toString().trim();sb.append(key + "=" + value.toString());sb.append("&");}sb.deleteCharAt(sb.length() - 1);}request = new MyStringRequest(Request.Method.GET, sb.toString(), succListener, errListener,encoding);Log.i("Info", "GET请求名称: " + name + "GET请求Url: " + sb.toString());//打印信息
        }request.setRetryPolicy(new DefaultRetryPolicy(connectTimeOut, 1, 1.0f));//设置请连接超时时间
        request.setTag(tag);JiaYouApplication.mInstance.getRequestQueue().add(request);showDialog();}/*** 显示等待对话框*/public void showDialog() {try {if (!isShowDialog) {return;}if(dialog!=null&&!dialog.isShowing()){dialog.show();}} catch (Exception e) {e.printStackTrace();}}/*** 关闭等待对话框*/public void dismissDialog() {try {if (dialog != null && dialog.isShowing())dialog.dismiss();} catch (Exception e) {}}public static class Builder {private String mRequestUrl = "";private OnHttpResListener onHttpResListener;// 回调接口private String name = "http请求描述";// 请求描述private Object mRequestObj = null;private boolean isShowDialog;private Context context;private String enCoding="UTF-8";public int connectTimeOut = 20 * 1000;private String tag;private int what=-1;private Dialog dialog;public  Builder(Context context){this.context=context;}/*** @param mRequestUrl 请求地址* @return*/public Builder setRequestUrl(String mRequestUrl) {this.mRequestUrl = mRequestUrl;return this;}/*** 请求接口标记** @param name* @return*/public Builder setRequestName(String name) {this.name = name;return this;}/*** @param mRequestObj 参数(可以是实体类对象,也可以是一个Map对象)* @return*/public Builder setRequestParams(Object mRequestObj) {this.mRequestObj = mRequestObj;return this;}/*** @param connectTimeOut 设置连接超时时间* @return*/public Builder setConnectTimeOut(int connectTimeOut) {this.connectTimeOut = connectTimeOut;return this;}/*** @param tag 设置标签,对请求进行标记* @return*/public Builder setRequestTag(String tag) {this.tag = tag;return this;}/*** @return 设置请求编码 默认UTF-8*/public Builder setRequestEncoding(String enCoding){this.enCoding=enCoding;return this;}/*** @param onHttpResListener 设置回调监听* @return*/public Builder setOnHttpListener(OnHttpResListener onHttpResListener) {this.onHttpResListener = onHttpResListener;return this;}/*** @param dialog 设置想要显示的弹出框* @return*/public Builder setDialog(Dialog dialog){this.dialog=dialog;return this;}/*** @param what 给每个请求打上标记,为了区分在同一个页面中的多个请求* @return*/public Builder setWhat(int what){this.what=what;return  this;}/*** @return 返回一个请求对象*/public HttpSender build() {return new HttpSender(this);}}
}

调用方法

 getBaseMapWithUid();baseMap.put("p", p + "");baseMap.put("nums", nums + "");baseMap.put("status", status + "");new HttpSender.Builder(getActivity()).setRequestUrl(Urls.GetUserOrder).setRequestParams(baseMap).setRequestName("获取订单").setWhat(0x123).setRequestTag("OrderRequest").setOnHttpListener(new OnHttpResListenerIml() {@Overridepublic void doSuccess(String data, int what) {//请求成功处理代码
        }}).build().sendPost();            

转载于:https://www.cnblogs.com/ce-home/p/6007832.html

volley 框架简易封装使用相关推荐

  1. 【QT学习】实现MVC框架的简易封装(一文读懂)

    文章目录 前言 一.MVC框架简介 1.核心部件 2.使用目的 3.MVC优点 二.具体封装步骤 1.文件管理 2.创建模型 3.创建控制器 4.MVC实现(用户登录验证为例) 总结 前言    MV ...

  2. Android Volley框架的使用(二)

     此博文源码下载地址  https://github.com/Javen205/VolleyDemo.git 使用请求队列RequestQueue Volley中的Request都需要添加到Reque ...

  3. Transmitting Network Data Using Volley(使用Volley框架传输网络数据)

    前面看了某大神关于Volley框架的文章,难怪说不要国内的技术文章,看了Google的官方文档,我才知道,心目中的大神还是有很多不足的地方.所以,对着英文,自己学习下. Volley is an HT ...

  4. Volley框架简介

    一.引言 虽然网上已经有很多大神.高手都写过了类似的帖子,但作为新人,必须要走模仿的道路,再考虑超越,因此学习大神的笔记,记录自己的理解,是一个菜鸟走向成功的必经之路啊.如签名所言,记录自己摸爬滚打的 ...

  5. Volley框架之三 疑难实现

    有了前面两章做基础,这篇文章主要分析一下,从Volley中我学到的知识点 1 .Requset是在哪里处理的?主线程还是子线程? 子线程处理Request,只要new了一个RequestQueue那么 ...

  6. 从源码角度学习Volley框架

    转载请标明出处:http://blog.csdn.net/newhope1106/article/details/53615398 虽然网上有很多文章是分析Volley框架的,不过博客的作用,一个是让 ...

  7. 【JavaScript框架封装】实现一个类似于JQuery的缓存框架的封装

    // 缓存框架 (function (xframe) {/*** 实现了缓存框架的临时存储功能(内存存储)* @type {{data: Array, get: (function(*): *), a ...

  8. ios开发瀑布流框架的封装

    一:瀑布流框架封装的实现思路:此瀑布流框架的封装仿照tableView的底层实现,1:每个cell的frame的设置都是找出每列的最大y值,比较每列的最大y值,将下一个cell放在最大y值最小的那一列 ...

  9. php封装公共方法,TP框架下封装公共函数详解

    本篇文章讲述了如何在TP框架下封装公共函数,大家对TP框架下封装公共函数不了解的话或者对TP框架下封装公共函数感兴趣的话那么我们就一起来看看本篇文章吧, 好了废话少说进入正题吧 当我们需要在控制层调用 ...

最新文章

  1. 1、交换机ARP缓存表分析
  2. 从 OSS 装载数据到 PostgreSQL
  3. Angular中使用双向数据绑定操作表单的input、checkboc、radio、select、textarea实现简单的人员登记系统实例
  4. IO多路复用 select、poll、epoll
  5. IOS之SplitViewController的使用
  6. 5位院士谈科研瓶颈:必须“逼着自己在精神上愿意吃苦”
  7. postMessage解决跨域问题
  8. TCP/IP详解卷1 - wireshark抓包分析
  9. 使用SQL Server事务复制将SQL Server数据库迁移到Azure SQL数据库
  10. 大数据平台有什么功能作用
  11. 面向对象六大原则----imageLoader为例层层优化
  12. python基于PIL模块实现矩阵与图像数据互相转换
  13. 计算机没有本地网络,网络连接里没有本地连接
  14. IDEA 2017 破解教程(2018也可以)
  15. log以2为底的对数
  16. Unity之使用Shader实现背景循环播放
  17. SDUTOJ4384_一方通行与最后之作(18级期末上机考试二)
  18. 锤子手机关闭位置服务器,技巧:锤子手机的4个隐藏小技巧 处处有情怀
  19. vue使用svg图片
  20. 如何用HTML和css实现简单的手风琴菜单效果,附带详细注释

热门文章

  1. maven依赖冲突解决_Maven依赖树–解决冲突
  2. winform ui 界面参考
  3. 学习C++编程的优势有哪些?
  4. 悄悄告诉你Java面试必备技能是什么?
  5. MyEclipse搭建SSH(Struts2+Spring2+Hibernate3)框架项目教程
  6. Android使用sqlliteOpenhelper更改数据库的存储路径放到SD卡上
  7. (转)[Unity3D]UI方案及制作细节(NGUI/EZGUI/原生UI系统) 内附unused-assets清除实例
  8. 【cocos2d-x】对CCSprite进行高斯模糊
  9. 【暴力】LeetCode 300. Longest Increasing Subsequence
  10. 剑指offer——面试题14:调整数组顺序使奇数位于偶数前面