`
流年不遗憾
  • 浏览: 6178 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Android:Xutils之HttpUtils&文件上传下载

阅读更多
  HttpUtils是解决日常工作过程中繁杂的上传下载文件以及各种Get和post请求的必备工具类,通过这个类,开源非常方便关注接口的业务,不必再再写那么冗长的代码。下面全文都围绕着四个中心点去依次展开,分别是:HttpGet请求,HttpPost请求,下载文件和上传文件。

    HttpGet请求。相信从事Android网络应用的开发的同学对这个一定不会陌生,长期的开发会让大家积累下一个可以复用的工具类。而xUtils就是帮助了我们把那些工具类给抽象整合成一个更具扩展性的帮助类。比如HtttpGet请求,这里只简要介绍下关键的应用方法,具体的细节还请大家自己去下载xUtils的源码去研究研究了,我们介绍的足够应用到我们的应用开发中去了。通常的HttpGet请求会把一系列的请求参数挂在请求地址的后面,拖出一节长长的尾巴,十分的惹人厌,这里可以通过像HttpPost请求的参数那样组成一个类似BasicNameValuePair的对象直接封装到请求方法中去,省去拼接url的麻烦,同时也可以设置超时时间。另外请求的方法中提供了一个回调类,这个类中有处理不同请求结果的回调方法,比如说请求过程中的回调,请求成功的回调以及请求出现错误时的回调。下面直接上代码看下。

RequestParams params = new RequestParams();
        params.addQueryStringParameter("method", "info");
        params.addQueryStringParameter("access_token",
                "3.1042851f652496c9362b1cd77d4f849b.2592000.1377530363.3590808424-248414");

        HttpUtils http = new HttpUtils();
        http.configCurrentHttpGetCacheExpiry(1000 * 10);
        http.send(HttpRequest.HttpMethod.GET,
                "https://pcs.baidu.com/rest/2.0/pcs/quota",
                params,
                new RequestCallBack<String>() {

                    @Override
                    public void onStart() {
                        resultText.setText("conn...");
                    }

                    @Override
                    public void onLoading(long total, long current) {
                        resultText.setText(current + "/" + total);
                    }

                    @Override
                    public void onSuccess(String result) {
                        resultText.setText("response:" + result);
                    }


                    @Override
                    public void onFailure(HttpException error, String msg) {
                        resultText.setText(msg);
                    }
                });
    HttpPost请求。为了统一请求的风格,HttpPost请求的方式和HttpGet的几乎可以说是一模一样,一样提供了各种对应不同结果的回调方法,大家自己看下面的代码就晓得了,真是一目了然。

RequestParams params = new RequestParams();
        params.addQueryStringParameter("method", "mkdir");
        params.addQueryStringParameter("access_token", "3.1042851f652496c9362b1cd77d4f849b.2592000.1377530363.3590808424-248414");
        params.addBodyParameter("path", "/apps/测试应用/test文件夹");

        HttpUtils http = new HttpUtils();
        http.send(HttpRequest.HttpMethod.POST,
                "https://pcs.baidu.com/rest/2.0/pcs/file",
                params,
                new RequestCallBack<String>() {

                    @Override
                    public void onStart() {
                        resultText.setText("conn...");
                    }

                    @Override
                    public void onLoading(long total, long current) {
                        resultText.setText(current + "/" + total);
                    }

                    @Override
                    public void onSuccess(String result) {
                        resultText.setText("upload response:" + result);
                    }


                    @Override
                    public void onFailure(HttpException error, String msg) {
                        resultText.setText(msg);
                    }
                });
下面为大家介绍一个非常非常实用的功能,就是通过Http协议去下载文件,再也不必为Android中下载文件而写下一大坨一大坨的代码,如此长的代码调试起来真是能气死人。还记得以前做过一个项目,有个需求就是能下载视频的,而且还要能支持断点下载,只写那么一个下载工具类就写了一两天,再加上调试,真心把人都给逼疯了。要是xUtils早点在那个时候面世,想那时做那个需求也不必那么通过。HttpUtils为开发者提供了非常方便的下载api,可以通过简单的几个参数来实现下载,甚至断点下载的功能。上代码。

HttpHandler  handler = http.download(
                downloadAddrEdit.getText().toString(),
                "/sdcard/fileexplorer.apk",
                true, // 如果目标文件存在,接着未完成的部分继续下载。
                true, // 如果从请求返回信息中获取到文件名,下载完成后自动重命名。
                new RequestCallBack<File>() {

                    @Override
                    public void onStart() {
                        resultText.setText("conn...");
                    }

                    @Override
                    public void onLoading(long total, long current) {
                        resultText.setText(current + "/" + total);
                    }

                    @Override
                    public void onSuccess(File result) {
                        resultText.setText("downloaded:" + result.getPath());
                    }

                    @Override
                    public void onFailure(HttpException error, String msg) {
                        resultText.setText(error.getExceptionCode() + ":" + msg);
                    }
                });
注意:下载过程中如果需要暂停下载,也只需简单的一行代码来实现:mHandler.stop(),如果设置断点下载的话,下次会重新开始的话,会自动从上次下载的断点处继续下载。

最后介绍的功能就是上传文件了,这个也是在项目中也是非常常见的。比如用户上传头像,再比如网盘应用需要把本地文件上传到云端等等。同时HttpUtils也同时为开发者提供了上传过程中和上传结果的各个回调接口。大家在使用HttpUtils上传文件的时候,只要仿照下面的代码去码代码就快可以基本满足业务的需要了。

RequestParams params = new RequestParams();
        params.addQueryStringParameter("method", "upload");
        params.addQueryStringParameter("path", "/apps/测试应用/test.zip");
        // 请在百度的开放access_tokenapi测试页面找到自己的access_token
        params.addQueryStringParameter("access_token", "3.1042851f652496c9362b1cd77d4f849b.2592000.1377530363.3590808424-248414");
        params.addBodyParameter("file", new File("/sdcard/test.zip"));

        HttpUtils http = new HttpUtils();
        http.send(HttpRequest.HttpMethod.POST,
                "https://pcs.baidu.com/rest/2.0/pcs/file",
                params,
                new RequestCallBack<String>() {

                    @Override
                    public void onStart() {
                        resultText.setText("conn...");
                    }

                    @Override
                    public void onLoading(long total, long current) {
                        resultText.setText(current + "/" + total);
                    }

                    @Override
                    public void onSuccess(String result) {
                        resultText.setText("upload response:" + result);
                    }


                    @Override
                    public void onFailure(HttpException error, String msg) {
                        resultText.setText(msg);
                    }
                });
分享到:
评论

相关推荐

    xUtils之HttpUtils的get和Post请求

    总结,xUtils的HttpUtils模块是Android开发中的得力助手,它通过简洁的API实现了GET和POST请求,同时也支持丰富的配置选项,帮助开发者更好地控制网络请求过程。在使用过程中,结合提供的示例代码和官方文档,可以...

    XUtils-HttpUtils

    这些示例通常包括GET和POST请求,以及可能的文件上传和下载操作。通过阅读和运行这些示例,开发者可以更好地理解和掌握`XUtils`的网络请求功能。 总结起来,`XUtils`的`HttpUtils`是Android开发中处理网络请求的一...

    android xUtils网络框架

    4. **文件上传与下载**:xUtils提供了方便的文件上传和下载功能。通过`FileUtils`类,你可以指定本地文件路径和服务器URL来实现文件上传。下载功能同样简洁,通过`download`方法设定目标文件URL和本地存储路径即可。...

    xUtils3.0 Demo

    同时,它还支持异步请求,可以实现后台下载、上传等功能,提高用户体验。 2. **注解操作**:xUtils3.0引入了注解机制,简化了代码编写。例如,使用@ViewById可以自动绑定XML布局文件中的控件,减少了findViewByID的...

    xutils指导代码、bitmap、下载、上传

    再来说说XUtils的文件上传功能。在上传文件时,通常需要处理网络请求,XUtils的HttpUtils类为此提供了强大的支持。通过`HttpPost`或`HttpGet`方法,开发者可以发起HTTP请求,并通过`Entity`参数添加上传的文件。`...

    xUtils-master

    1. 网络请求:xUtils内置了HttpUtils,支持GET、POST等多种HTTP请求方式,可以处理异步和同步请求,支持文件上传和下载,还能自动处理JSON、XML等数据格式。 2. 图片加载:ImageUtils模块提供了图片的加载、缓存和...

    Android应用源码(精)xUtils2.2.5.zip

    2. 网络请求模块(HttpUtils):提供HTTP/HTTPS请求,支持GET、POST等多种请求方式,以及文件上传下载、自定义Header等高级功能,简化了网络通信过程。 3. 数据库操作模块(DBUtils):基于ActiveRecord设计模式,...

    XUtils上传文件.zip

    在Android开发中,文件上传是一项常见的任务,尤其是在与服务器进行数据交互时。XUtils是一个流行的Android开发工具库,它提供了一系列便捷的API用于处理网络请求、图片加载、数据库操作等。在这个“XUtils上传文件....

    使用xutils拍照或从SD卡选图片上传

    2. **网络上传**: XUtils的`HttpUtils`类提供了上传文件的功能。首先,创建一个`RequestParams`对象,设置上传的URL和参数,然后调用`post`方法上传文件。 ```java RequestParams params = new RequestParams(...

    xUtils四个模块简单demo

    xUtils支持文件下载,并且在demo中演示了如何添加下载进度条功能。`DownloadUtils`类提供了下载接口,可以通过监听下载进度来更新UI。例如,使用`startDownload()`方法启动下载任务,`setCallback()`设置下载回调,...

    安卓文件下载上传解压相关-利用xutils框架写的下载管理器.rar

    对于文件上传,HttpUtils也提供了相应的接口。开发者可以将本地文件作为RequestBody传递,同时设置上传参数,如文件名、MIME类型等。上传进度同样可以通过回调接口获取,以便更新UI。 4. **解压文件** 在Android...

    Xutils上传照片源码(客户端以及服务器端).zip

    Xutils是一个广泛应用于Android开发中的开源框架,由国内开发者李明伟(网名wetiger)创建。这个框架集成了图片加载、网络请求、数据库操作等功能,为开发者提供了便利的工具,大大简化了代码实现过程。本文将深入...

    Android快速开发框架xUtils-2.6.14

    xUtils 包含了很多实用的android工具 xUtils 源于Afinal框架 对Afinal进行了大量重构 使得xUtils支持大文件上传 更全面的http请求协议支持 拥有更加灵活的ORM 更多的事件注解支持且不受混淆影响 xUtils的四大组件:...

    xutils框架项目

    1. **后台交互**:xUtils的HttpUtils模块提供了方便的HTTP请求处理,支持GET、POST等常见请求方式,以及文件上传下载。开发者只需简单几行代码,就能实现与服务器的无缝对接,极大地提高了开发效率。 2. **二维码...

    xUtils3-maste

    xutils是前几年比较火得一个开源框架,主要分四个重要的模块:ViewUtils,HttpUtils,BitmapUtils,DbUtils,包含了很多实用的工具类,支持大文件上传,且有更全面的http请求协议支持,拥有灵活的Orm,支持事件注解...

    xUtils 安卓类库框架开源

    xUtils 最初源于Afinal框架 进行了大量重构 使得xUtils支持大文件上传 更全面的http请求协议支持 10种谓词 拥有更加灵活的ORM 更多的事件注解支持且不受混淆影响 xUitls最低兼容android 2 2 api level 8 目前...

    xUtils3-1.01master.zip

    2. 网络请求:xUtils3集成了HttpUtils模块,支持GET、POST等常见HTTP请求方式,自动处理网络请求的异步和同步,同时具备文件上传和下载功能。 3. 图片加载:使用ViewUtils,开发者可以轻松实现图片的加载、缓存和...

    xUtils3视频笔记

    开发者可以通过它轻松地实现GET和POST请求,同时支持上传和下载操作。HttpUtils还提供了异步请求的能力,可以配合回调接口处理请求结果,确保UI线程不会被阻塞,提高了用户体验。此外,xUtils3的缓存机制也使得在...

    xUtils jar包3个版本

    支持大文件上传,上传大文件不会oom; 支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT请求; 下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件; 返回文本...

    Volley-XUtils-OkHttp三种方式实现单张多张图片上传

    XUtils的图片上传主要依赖其`HttpUtils`类。 1. **初始化XUtils**: - 首先需要初始化XUtils,通常在Application中执行`Xutils.init(Context)`。 2. **上传图片**: - 调用`HttpUtils.post(url, params, new File...

Global site tag (gtag.js) - Google Analytics