Android平台下轻量级http网络传输库
程序员文章站
2023-12-20 18:21:58
asynchttphelp是一个android平台下基于httpclient开发的http网络请求工具。
优点
功能齐全,提供常用的http网络访问接口。...
asynchttphelp是一个android平台下基于httpclient开发的http网络请求工具。
优点
- 功能齐全,提供常用的http网络访问接口。
- 轻量级,无任何第三方库依赖,库大小为90k左右。
- 定制化,自定义json解析库,支持请求参数,返回内容预处理。
- 易用性,简单易用,只需几行代码即可完成请求,可随意设置cookie、http头部等信息。
功能
1、普通get请求
2、普通post请求
3、form表单提交数据
4、二进制数据传输
5、json格式内容传输(json字符串自动转java对象,java对象自动转json字符串)
6、普通文件上传/下载
7、断点上传/下载
8、分块上传文件
9、session保持
10、自定义cookie、http头部信息等
11、取消请求
12、自定义json解析器
13、请求内容,返回内容预处理
14、设置请求结果是否在ui线程执行
测试示例
用法示例
get请求
asynchttprequest request = new asynchttputil.builder() .url("http://www.luoxudong.com/") .setcallable(new simplerequestcallable() { @override public void onfailed(int errorcode, string errormsg) { //请求失败 } @override public void onsuccess(string responseinfo) { //请求成功 } }) .build().get();
get请求(返回结果为json,自动转换成java对象)
asynchttprequest request = new asynchttputil.builder() .url("http://www.bchun.com/fund/service.do?func=getprovinces") .setresponseclass(response.class)//返回的json对象类型,自动转换改类的对象 .setjsonresponseinterceptor(new jsonresponseinterceptor<response>() {//返回结果拦截器,方便自定义json解析器以及对返回结果作简单预处理。 @override public response convertjsontoobj(string responsestr, class<response> mresponseclass) { return new gson().fromjson(responsestr, mresponseclass); } @override public boolean checkresponse(response response) {//可以根据返回的结果判定该请求是否成功,如果返回true,则在callable中调用onsuccess回调方法,为false时调用onfailed回调方法 if (response.getserverresult().getresultcode() == 0){ return true; } seterrorcode(asynchttpexceptioncode.defaultexceptioncode.geterrorcode()); seterrormsg(response.getserverresult().getresultmessage()); return false; } }) .setcallable(new jsonrequestcallable<response>() {//回调 @override public void onfailed(int errorcode, string errormsg) { //请求失败 } @override public void onsuccess(response responseinfo) { //请求成功 } }) .build().get();
post请求
asynchttprequest request = new asynchttputil.builder() .url("http://www.bchun.com/fund/service.do?func=getprovinces") .setstrbody("body内容")//post内容 .setcallable(new simplerequestcallable() { @override public void onfailed(int errorcode, string errormsg) { //请求失败 } @override public void onsuccess(string responseinfo) { //请求成功 } }) .build().post();
post请求(模拟form表单)
asynchttprequest request = new asynchttputil.builder() .url("http://www.bchun.com/fund/service.do?func=getprovinces") .addformdata("a", "1")//设置form表单数据,也可以调用setformdatas方法 .addformdata("b", "luoxudong") .setcallable(new simplerequestcallable() { @override public void onfailed(int errorcode, string errormsg) { //请求失败 } @override public void onsuccess(string responseinfo) { //请求成功 } }) .build().post();
post请求(内容为二进制数据)
asynchttprequest request = new asynchttputil.builder() .url("http://www.bchun.com/fund/service.do?func=getprovinces") .setbinarybody(new byte[]{1,2,3,4,5}) .setcallable(new binaryrequestcallable() { @override public void onfailed(int errorcode, string errormsg) { //请求失败 } @override public void onsuccess(byte[] buffer) { //请求成功 } }) .build().post();
post请求(json字符串自动转换对象)
list<string> list = new arraylist<string>(); list.add("item1"); list.add("item2"); request req = new request(); req.setkey1("value1"); req.setkey2(1); req.setkey3(true); req.setkey4(list); asynchttprequest request = new asynchttputil.builder() .url("http://www.bchun.com/fund/service.do?func=getprovinces") .setrequestobj(req)//json格式请求内容 .setjsonrequestinterceptor(new jsonrequestinterceptor() {//请求数据拦截器,自定义json解析器 @override public string convertjsontoobj(object requestobj) { return new gson().tojson(requestobj); } }) .setresponseclass(response.class) .setjsonresponseinterceptor(new jsonresponseinterceptor<response>() {//返回结果拦截器,方便自定义json解析器以及对返回结果作简单预处理。 @override public response convertjsontoobj(string responsestr, class<response> mresponseclass) { return new gson().fromjson(responsestr, mresponseclass); } @override public boolean checkresponse(response response) { if (response.getserverresult().getresultcode() == 0){ return true; } seterrorcode(asynchttpexceptioncode.defaultexceptioncode.geterrorcode()); seterrormsg(response.getserverresult().getresultmessage()); return false; } }) .setcallable(new jsonrequestcallable<response>() { @override public void onfailed(int errorcode, string errormsg) { //请求失败 } @override public void onsuccess(response responseinfo) { //请求成功 } }) .build().post();
普通下载
asynchttprequest request = new asynchttputil.builder() .url("http://shouji.360tpcdn.com/151125/1259d7ddba8a048c2b9e778c9b5a9d04/com.bchun.fundqa_5.apk") .setdownloadfiledir("/sdcard")//文件本地保存路径 .setdownloadfilename("fund.apk")//文件名称 .setcallable(new downloadrequestcallable() { @override public void onfailed(int errorcode, string errormsg) { //下载失败 } @override public void ontransfering(long totallength, long transferedlength) { //下载进度 } @override public void onsuccess(string responseinfo) { //下载完成 } }) .build().download();
断点下载
asynchttprequest request = new asynchttputil.builder() .url("http://shouji.360tpcdn.com/151125/1259d7ddba8a048c2b9e778c9b5a9d04/com.bchun.fundqa_5.apk") .setdownloadfiledir("/sdcard")//文件本地保存路径 .setdownloadfilename("fund.apk.temp")//文件名称 .setfilestartpos(1000)//设置续下载开始位置 .setcallable(new downloadrequestcallable() { @override public void onfailed(int errorcode, string errormsg) { //下载失败 } @override public void ontransfering(long totallength, long transferedlength) { //下载进度 } @override public void onsuccess(string responseinfo) { //下载完成 } }) .build().download();
普通上传
asynchttprequest request = new asynchttputil.builder() .url("http://192.168.100.62:8080/myhost/fund/upload.do") .adduploadfile("file", new file("/sdcard/fund.apk"))//添加文件,也可以调用setfilewrappers方法,同时添加多个文件 .adduploadfile("file1", new file("/sdcard/wifi_config.log")) .addformdata("md5", "aadfsdf")//添加form参数 .setcallable(new uploadrequestcallable() { @override public void onfailed(int errorcode, string errormsg) { //上传失败 } @override public void ontransfering(string name, long totallength, long transferedlength) { //上传进度 } @override public void ontransfersuc(string name) { //文件name上传完成 } @override public void onsuccess(string responseinfo) { //全部上传成功! } @override public void oncancel() { //上传取消 } }) .build().upload();
断点上传
filewrapper filewrapper = new filewrapper(); filewrapper.setfile(new file("/sdcard/fund.apk")); filewrapper.setblocksize(100000);//上传100000字节数据,默认为0,上传至文件末尾 filewrapper.setstartpos(1000);//从1000字节开始上传 asynchttprequest request = new asynchttputil.builder() .url("http://192.168.100.62:8080/myhost/fund/upload.do") .addfilewrapper("file", filewrapper)//自定义上传文件,支持断点续传,支持上传指定数据大小 .addformdata("md5", "aadfsdf")//添加form参数 .setcallable(new uploadrequestcallable() { @override public void onfailed(int errorcode, string errormsg) { //上传失败 } @override public void ontransfering(string name, long totallength, long transferedlength) { //上传进度 } @override public void ontransfersuc(string name) { //文件name上传完成 } @override public void onsuccess(string responseinfo) { //上传成功! } @override public void oncancel() { //上传取消 } }) .build().upload();
中断请求
request.cancel();
打开/关闭日志输出
asynchttplog.enablelog(); asynchttplog.disablelog();
以上就是本文的全部内容,希望对大家的学习有所帮助。