1.简介 

Android中网络请求一般使用Apache HTTP
Client或者采用HttpURLConnection,但是直接使用这两个类库需要写大量的代码才能完成网络post和get请求,而使用这个MyHttpUtils库可以大大的简化操作,它是基于HttpURLConnection,所有的请求都是独立在UI主线程之外,没有通过CommCallback回调方法处理请求结果,
没有了子线程、没有了handle,链式的变成使得代码更加清晰 。

2.特性

  1. 支持get、post请求,文件下载,上传等;
  2. 支持http和https的协议;
  3. 支持设置连接、读取超时时间(可选);
  4. 支持json格式的请求结果(无论json格式多复杂,都能搞定);
  5. 支持传入JavaBean对象(解析之后的javabean对象);
  6. 支持回调方法中反应传入javabean对象,这样可以在回调方法中直接拿到解析过后的javabean对象;
  7. 支持回调方法中更新UI(所以叫异步请求了)。

说明:java中一切皆对象,这里的JavaBean对象就是你请求接口之后返回的json数据所对应的实体,使用时返回的json数据可根据你给的对象自动解析并返回对象。

3.使用

gradle添加依赖(添加完之后Sync一下):

compile 'com.huangdali:myhttputils:2.0.2'

get:

public void onGet() {
String url = "http://gpj.zhangwoo.cn/app.php?platform=android&appkey=5a379b5eed8aaae531df5f60b12100cfb6dff2c1&c=member&a=getdepartments";
new MyHttpUtils()
.url(url)//请求的url
.setJavaBean(UserBean.class)//设置需要解析成的javabean对象
.setReadTimeout(60000)//设置读取超时时间,不设置的话默认为30s(30000)
.setConnTimeout(6000)//设置连接超时时间,不设置的话默认5s(5000)
.onExecute(new CommCallback<UserBean>() {//开始执行异步请求,传入一个通用回调对象,泛型为返回的javabean对象
@Override
public void onSucess(UserBean bean) {//成功之后回调
Util.showMsg(MainActivity.this, bean.getData().get(0).getDepartname());
} @Override
public void onFailed(String msg) {//失败时候回调
Util.showMsg(MainActivity.this, msg);
}
});
}

Post:

public void onPost() {
HashMap<String, String> param = new HashMap<>();
param.put("c", "member");
param.put("a", "getdepartments");
new MyHttpUtils()
.url(urls2)
.addParam(param)
.setJavaBean(UserBean.class)
.onExecuteByPost(new CommCallback<UserBean>() {///实体类自动解析
@Override
public void onSucess(UserBean remarkBean) {
Log.i("tag",remarkBean.toString());
Util.showMsg(MainActivity.this, remarkBean.getData().get(0).getDepartname());
}
@Override
public void onFailed(String msg) {
Util.showMsg(MainActivity.this, msg);
}
});
}

文件下载:

public void onDownload() {
String url = "http://avatar.csdn.net/8/6/0/2_dickyqie.jpg";
new MyHttpUtils()
.url(url)
.setFileSavePath("/sdcard/downloadtest")//不要这里只是填写文件保存的路径,不包括文件名哦
.setReadTimeout(5 * 60 * 1000)//由于下载文件耗时比较大,所以设置读取时间为5分钟
.downloadFile(new CommCallback<String>() {
@Override
public void onSucess(String msg) {
Util.showMsg(MainActivity.this, msg);
} @Override
public void onFailed(String s) { }
/**
* 可以重写进度回调方法
* @param total
* @param current
*/
@Override
public void onDownloading(long total, long current) {
tvProgress.setText("当前进度:" + new DecimalFormat("######0.00").format(((double) current / total) * 100) + "%");
}
});
}

别忘加网络权限

<uses-permission android:name="android.permission.INTERNET" />

文件上传和下载也需要添加权限

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

源码点击下载: https://github.com/DickyQie/android-network-request

最新文章

  1. Android MVP模式 谷歌官方代码解读
  2. python学习笔记之迭代器和函数(第三天)
  3. 两个APP跳转传值问题
  4. Java_Eclipse_Maven环境搭建
  5. Redis+Django(Session,Cookie)的用户系统
  6. Java I/O 对象序列化
  7. Java Web开发 之JavaBean整理
  8. JavaScript之共享onload
  9. 新增article注意事项
  10. 康盛(discuz )牛逼的PHP加解密算法函数
  11. DOM4J生成、解析XML实例
  12. Cordova入门系列(一)创建项目 转发 https://www.cnblogs.com/lishuxue/p/6008678.html
  13. Tips on GORM, Avoid Error about &quot;duplicate column name: id&quot;
  14. VMware安装CentOS 6.9教程
  15. Do You Kown Asp.Net Core -- Asp.Net Core 2.0 未来web开发新趋势 Razor Page
  16. 爱因斯坦求和约定 (Einstein summation convention)
  17. 【JVM.6】虚拟机类加载机制
  18. Enum 扩展
  19. Map 接口
  20. find the most comfortable road(hdu1598)不错的并查集

热门文章

  1. Keepalived 安装
  2. Python: yield, python 实现tail -f
  3. Spring,Struts2,MyBatis,Activiti,Maven,H2,Tomcat集成(四)——Activiti集成
  4. linux常用命令:sort 命令
  5. python环境安装selenium和手动下载安装selenium的方法
  6. Windows10 64位下安装TensorFlow谷歌人工智能系统已官方原生支持
  7. Google&#39;s Machine Learning Crash Course #03# Reducing Loss
  8. Python入门之面向对象module,library,package之间区别
  9. html判断当前页面是否在iframe中/顶级document中
  10. django session 使用案例