Android学习之xUtils --- HttpUtils模块-程序员宅基地

技术标签: 移动开发  

HttpUtils是解决日常工作过程中繁杂的上传下载文件以及各种Get和post请求的必备工具类。

通过这个类, 非常方便的进行网络访问下载等操作,不必再再写那么冗长的代码。

 

 

HttpGet请求 和 HttpPost请求

 

  

Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。 其中最常用的就是GET,POST 根据HTTP规范,GET用于信息获取,而且应该是安全的和幂等的。 根据HTTP规范,POST表示可能修改变服务器上的资源的请求 GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:login.action?name=hyddd&password=idontknow&verify=%E4
%BD%A0%E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中
的XX为该符号以16进制表示的ASCII。 因为GET方式提交的参数是可见的,因此有可能造成数据的泄露,从这方面讲,GET没有POST安全. GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据 POST把提交的数据则放置在是HTTP包的包体中。相对安全,能传送较多的数据 有关GET和POSt请求方式更多知识,请见:http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html

HttpUtils怎样进行两种方式的请求呢?

 

HttpUtils类有一个send方法,如下:


send(HttpRequest.HttpMethod method, String url, RequestParams params,
RequestCallBack<T> callBack)

 
send(HttpRequest.HttpMethod method, String url,RequestCallBack<T> callBack)



send方法参数列表:
1. HttpRequest.HttpMethod method 请求方式
HttpRequest.HttpMethod.GET get方式
HttpRequest.HttpMethod.POST post方式
2.String url 请求网址
3.RequestParams params 参数对象,对象以键值对形式存储,自动拼接(没有参数,就使用三个参数的send方法)

对象创建: RequestParams params = new RequestParams();
params.addQueryStringParameter("method", "info");
params.addQueryStringParameter("access_token",
"3.1042851f652496c9362b1cd77d4f849b.2592000.1377530363.3590808424-248414");
4.RequestCallBack<T> callBack 回调通知接口,
onSuccess 请求这一动作成功之后的回调方法
onFailure 失败的回调,不是指的服务器返回数据告诉你失败,而是出现网络错误啊 服务器出现问题啊等等这种错误

 
HttpUtils httpUtils = new HttpUtils();
 httpUtils.send(HttpRequest.HttpMethod.GET, "http://www.baidu.com", new RequestCallBack<String>() {
            @Override
            //请求动作成功之后的回调
            public void onSuccess(ResponseInfo<String> responseInfo)  {


}
// 请求动作失败的回调,不是指的服务器返回数据告诉你失败,而是出现网络错误啊 服务器出现问题啊等等这种错误 @Override public void onFailure(HttpException error, String msg) {
} });

上传文件也是用send方法。

 

下载文件:

  
HttpUtils的download方法(支持断点续传):

以下都是该方法的重载:
         参数:
           1. String url 下载地址
           2. String target  下载文件存储位置
           3. RequestCallBack<File> callback 回调通知接口

         download(String url, String target,RequestCallBack<File> callback) { }

        download(String url, String target, boolean autoResume, RequestCallBack<File> callback) {}


          4.  boolean autoResume  为true时,如果目标文件存在,接着未完成的部分继续下载。
           5.boolean autoRename  为true时,如果从请求返回信息中获取到文件名,下载完成后自动重命名
         download(String url, String target,boolean autoResume, boolean autoRename, RequestCallBack<File> callback) {}

        // 加上参数的下载
         download(String url, String target, RequestParams params, RequestCallBack<File> callback) {}

         download(String url, String target, RequestParams params, boolean autoResume, RequestCallBack<File> callback) { }

         download(String url, String target,RequestParams params, boolean autoResume, boolean autoRename, RequestCallBack<File> callback) {}

        // 指定访问网络方式
          download(HttpRequest.HttpMethod method, String url, String target,RequestParams params, RequestCallBack<File> callback) {}

         download(HttpRequest.HttpMethod method, String url, String target,RequestParams params, boolean autoResume, RequestCallBack<File> callback) {}

         download(HttpRequest.HttpMethod method, String url, String target, RequestParams params, boolean autoResume, boolean autoRename, RequestCallBack<File> callback) {}
        

这里是我自己的一些总结,更多更详细的知识大家往这里看:http://my.oschina.net/jack1900/blog/174439

讲的很细,也很易懂,大家一起学习喽。

 

转载于:https://www.cnblogs.com/mafangfang/p/4926238.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/aichanbin3586/article/details/102373707

智能推荐

jQuery调用php函数-程序员宅基地

文章浏览阅读1.7k次。jquery调用php一般是用AjAx方式来调用的。这里是列表文本首先确认需要调用的php文件,可以是绝对路径,也可以是相对路径这里输入引用文本这里以Jquery为例子解释上面的问题这里是列表文本如下图就是jquery的实现代码,下图的url就是需要请求的php地址; ..._jquery调用php函数

ImportError: DLL load failed while importing _pywrap_tensorflow_internal:-程序员宅基地

文章浏览阅读2.7k次。在anaconda里安装tensorflow的时候,出现了此问题。我的原因是python的版本和tensorflow的版本不兼容,我安装的是Python3.8,降级到Python3.7就好了

Android Toast基础与原理_android aidl中toast-程序员宅基地

文章浏览阅读2.2k次。一、Toast的使用方式Toast.makeText(context,text,duration)public Toast(Context context)在Android系统中,给我们提供了两种方式来创建一个Toast对象。第一种是通过makeText方法快速构建Toast对象。第二种是通过Toast的构造方法进行创造一个空的(不含View)的Toast对象。注意,通过构造方法创_android aidl中toast

LBS-程序员宅基地

文章浏览阅读1.5k次。Location Based ServiceLBS定位与GPS定位的区别https://blog.csdn.net/weixin_36397141/article/details/70170702微信、陌陌的架构方案分析https://blog.csdn.net/it_man/article/details/39640327Mysql Mongodb LBS快速实现方案https://...

[Leetcode daily] 303. 区域和检索 - 数组不可变_I-Hsien的博客-程序员宅基地

文章浏览阅读82次。Description给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。实现 NumArray 类:NumArray(int[] nums) 使用数组 nums 初始化对象int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点(也就是 sum(nums[i], nums[i + 1], … , nums[j]))示例:输入:["NumArray",

(Android实战)ProgressBar+AsyncTask实现界面数据异步加载(含效果图)-程序员宅基地

文章浏览阅读1.3k次。1 效果图 加载数据时 加载数据完成时 加载数据异常时 2 实现说明 加载前:界面显示异步加载控件,隐藏数据显示控件,加载异常控件 加载成功:根据加载的数据,初始化数据显示控件 加载失败:显示加载异常的控

随便推点

Appium-Drivers-UIAutomation(iOS)_appium uiautomation-程序员宅基地

文章浏览阅读348次。iOS自动化测试The UIAutomation Drivers for iOSRequirements and SupportUsageCapabilitiesCommandsSimulator SetupReal Device SetupReal Device Hybrid / Web TestingFiles generated by iOS test runsRunning iOS tests using JenkinsNote: This driver is DEPRECATED and s_appium uiautomation

python 时间序列分解 stl_jupyter notebook运行时间序列分解STL趋势和季节-程序员宅基地

文章浏览阅读502次。1."ImportError: No module named" when trying to run Python scriptnotebook不知道module的路径在哪,默认只知道current path先找到包所在位置pip show --verbose pandas再告诉notebookimport syssys.path.append('/usr/local/lib/python2...._python 安装stl季节趋势分解库

C语言----最长回文子串_给定一个长度为 n,全部由小写英文字母组成字符串 s,找出最长的子串,使得该子串在_ftzchina的博客-程序员宅基地

文章浏览阅读4.3k次。给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"示例 3:输入:s = "a"输出:"a"示例 4:输入:s = "ac"输出:"a" 提示:1 <= s.length <= 1000s 仅由数字和英文字母(大写和/或小写)组成来源:力扣(LeetCode)链接:https://leetcode-cn_给定一个长度为 n,全部由小写英文字母组成字符串 s,找出最长的子串,使得该子串在

LLVM(还没译完, 回头再译)-程序员宅基地

文章浏览阅读795次。This chapter discusses some of the design decisions that shaped LLVM1, an umbrella project that hosts and develops a set of close-knit low-level toolchain components (e.g., assemblers, compilers, de

【BugFix】Mysql执行SQL转义字符问题,后吞了反斜杠\_qsql exec 反斜杠消失-程序员宅基地

文章浏览阅读1.2k次。1.现象update regrex set regrex='[^(a-zA-Z0-9\u4e00-\u9fa5)]' where id=1执行完之后,对应的字符串中没有了反斜杠\执行后 反斜杠被mysql转义没了2.原因mysql执行会对内容进行转义,\是特殊对转义字符,转义后消失了,如需要保存反斜杠\ 需要对反斜杠进行转义3.解决方案转义字符特殊处理,再加一个反..._qsql exec 反斜杠消失

使用Redis SETNX 命令实现分布式锁-程序员宅基地

文章浏览阅读10w+次,点赞25次,收藏143次。使用Redis的 SETNX 命令可以实现分布式锁,下文介绍其实现方法。SETNX命令命令格式 SETNX key value将 key 的值设为 value,当且仅当 key 不存在 若给定的 key 已经存在,则 SETNX 不做任何动作。 SETNX 是SET if Not eXists的简写。返回值返回整数,具体为 - 1,当 key 的值被设置 - 0,当 key 的值没被设