阅读更多

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() {//开始执行异步请求,传入一个通用回调对象,泛型为返回的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 param = new HashMap<>();        param.put("c", "member");        param.put("a", "getdepartments");        new MyHttpUtils()                .url(urls2)                .addParam(param)                .setJavaBean(UserBean.class)                .onExecuteByPost(new CommCallback() {///实体类自动解析                    @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() {                    @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) + "%");                    }                });    }


别忘加网络权限

 

 


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

 

 

 

 

源码点击下载

 

 

更多相关文章

  1. Android(安卓)序列化对象接口Parcelable使用方法
  2. Android加密(一)
  3. android 获取手机中所有的传感器Sensor类使用方法
  4. Android柱状图MPAndroidChart使用
  5. Android开发-面向对象的数据库Db4o
  6. android系统图标的使用
  7. Android(安卓)mount/unmount SD卡
  8. Android(安卓)多媒体 -- 四种播放视频的方法
  9. android Sqlite数据库事务处理*.sql 语句集文件

随机推荐

  1. Android 将少量的数据文件保存在 data/da
  2. Android(安卓)快速发布开源项目到jcenter
  3. Android(安卓)ScrollView嵌套WebView出现
  4. Android教父高焕堂谈Android“开源”与“
  5. [置顶] Android 内存泄露的几种情形
  6. Android 什么是 Material Design
  7. 漫谈Android与Chrome OS
  8. Android学习之如何配置使用Android studi
  9. .net程序员业余Android开发赚点外快(介绍
  10. Android优势和劣势分析(面试华为的人有被