首页 > 其他分享 >Android平台下轻量级http网络传输库

Android平台下轻量级http网络传输库

时间:2024-04-09 14:13:15浏览次数:21  
标签:http String void Override new Android public 轻量级 请求

Android平台下轻量级http网络传输库

 更新时间:2016年01月15日 15:06:36   作者:rohsuton     这篇文章主要介绍了Android平台下轻量级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请求

1 2 3 4 5 6 7 8 9 10 11 12 13 14 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对象)
 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 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请求   

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 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表单)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 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请求(内容为二进制数据)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 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字符串自动转换对象)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 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();

普通下载

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 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();

断点下载  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 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();

普通上传
   

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 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();

断点上传
  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 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();

中断请求

1 request.cancel();

打开/关闭日志输出

1 2 3 AsyncHttpLog.enableLog();   AsyncHttpLog.disableLog();

以上就是本文的全部内容,希望对大家的学习有所帮助。

标签:http,String,void,Override,new,Android,public,轻量级,请求
From: https://www.cnblogs.com/ioriwellings/p/15698245.html

相关文章

  • MFC通过Http请求上传文件
    MFC通过Http请求上传文件voidCMFCApplication1Dlg::HttpPostFile(stringurl,CStringfile,stringparamName,stringcontentType){CInternetSessionpSession(_T("ic_PostWav"));//可以随意CHttpConnection*pConnect;CHttpFile*pFile;//通过......
  • Android车载开发前景如何?
    前言随着智能汽车的不断普及和智能化程度不断提高,各大车企都想拥有自己的车载系统,也有大量车企采用Android系统的车载设备,所以说,Android车载开发的前景如何呢?一、Android车载开发现状如何?1、智能化和自动化趋势随着智能汽车市场的扩大,车载智能座舱等智能化组件将成为未......
  • Android签名文件生成
    Android签名文件的生成是发布Android应用过程中不可或缺的一环,它用于保证应用的完整性和开发者身份的真实性。1、使用 keytool 命令生成签名文件keytool-genkeypair-v-keystoremy-release-key.keystore-aliasmy-key-alias-keyalgRSA-keysize2048-validity10000......
  • Firefox火狐浏览器控制台,提示:已拦截跨源请求:同源策略禁止读取位于 http://127.0.0.1
    前言全局说明Firefox火狐浏览器控制台,提示:已拦截跨源请求一、火狐官方说明https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS/Errors/CORSMissingAllowOrigin?utm_source=devtools&utm_medium=firefox-cors-errors&utm_campaign=default二、修改浏览器方法[原文......
  • Android14音频进阶之<进阶调试>:Perfetto定位系统音频问题(六十六)
    简介:CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!优质专栏:Audio工程师进阶系列【原创干货持续更新中……】......
  • [网络/HTTPS/Java] PKI公钥基础设施体系:基础概念篇
    0序看过上一篇文章、且有点懵的朋友,可以参看本篇————针对PKI体系的核心概念进行解释。1PKI体系(公开密钥基础设施体系)1.1PKI体系是什么?PKI是PublicKeyInfrastructure的缩写,中文叫做公开密钥基础设施,也就是利用公开密钥机制建立起来的基础设施。PKI的主要......
  • 在GitHub上用HTTP端口使用ssh
    问题:在实现本地仓库与GitHub仓库相关联时出现下图问题尝试了很多方法包括但不限于:更改公私钥密码,更改防火墙,检查仓库UPL等方法但都没有效果解决方法:通过HTTPS端口使用SSH测试有时,防火墙完全拒绝允许SSH连接。如果无法使用带有凭据缓存的HTTPS克隆,则可以尝试使用通过......
  • 【Azure App Service】验证App Service接受HTTP 2.0请求
    问题描述在AppService中启用了HTTP2.0后,如何来验证它可以正常接受HTTP2.0的请求呢?问题解答如果直接使用浏览器访问,无法直接判断出来是否使用HTTP2.0,所以本文中使用.NETConsole代码来测试HTTP2.0.第一步:打开VisualStudio2022,创建一个.NETConsoleApplication第二步......
  • AndroidStudio学习记录(5):图像按钮ImageView的实现
    <?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"......
  • http免费升级https
    背景:首先我们需要了解HTTPS并不是一个全新的协议,而是在HTTP的基础上,通过SSL增加了一层加密协议,从而大大增加了HTTP协议的安全性。HTTPS主要由两部分组成:HTTP(超文本传输协议)+SSL/TLS(安全协议),也就是在HTTP上又加了一层处理加密信息的模块。目录背景:http的概念和......