Android高级之xUtils框架(二):HttpUtils

HTTPUtils_HTTP上传下载_ HTTP 源代码库,包含上传文件,下载文件,批量上传和下载 立即下载

HttpUtils步骤很简单,不过需要注意几个细节。

一。步骤:

1.导入xUtils包,

2.得到HttpUtils实例,

3.调用send()或者download()进行网络请求操作,

4.取消请求。

二。注意:

1.当我们得到HttpUtils实例直接调用方法时,可能会出现错误,造成这个问题的原因是,你的API编译器是23的,而在android 6.0(API23)中,取消掉了HttpClient,导致无法请求,如果是这种情况,解决办法有两个:

1.1.查看官方文档,在build.gradle(Module.app)中的android下加一句代码,同步就可以了;

android{

useLibrary'org.apache.http.legacy'

}

1.2.可以降版本使用:

compileSdkVersion 23,

targetSdkVersion 23,

compile 'com.android.support:appcompat-v7:23.1.0',

将23版本改为以下的就可以。

2.当调用send方法时,虽然是泛型,但泛型只能用String,调用download()时,泛型只能是File。返回值为HttpHandler<>;

3.调用方法时,会有一个RequestCallBack参数,这个参数是一个抽象类,而不是接口,所以不能船“this”去实现它。

然后会得到请求成功和请求失败的方法,调用download时,还会有一个onLoading()方法,可在以上方法中实现具体功能。还是看代码吧!

三。具体代码:

1.send()请求文本数据:

//注解的方式

@ContentView(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {
@ViewInject(R.id.textView)
    private TextView textView;
    @ViewInject(R.id.imageView)
    private ImageView imageView;
    private HttpUtils httpUtils;
    private String path="http
://www.bai.du.com";
    private HttpHandler<String> handler;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ViewUtils.inject(this);
        //得到HttpUtils实例,参数:设置请求超时时间

        httpUtils = new HttpUtils(5000);
        /*
        * 通过得到
实例调用send,返回值为HttpHandler<String>

        * 1参:请求方式
        * 2参:请求路径
        * 3参:抽象类,实现他的方法*/
        handler = httpUtils.send(HttpRequest.HttpMethod.GET, path,
                new RequestCallBack<String>() {

                    @Override
                    /*请求成功时回调*/
                    public void onSuccess(ResponseInfo<String> responseInfo) {
                        textView.setText(responseInfo.result);
                        Toast.makeText(MainActivity.this, "加载成功", Toast.LENGTH_SHORT).show();
                    }
                    /*请求失败时回调*/
                    @Override
                    public void onFailure(HttpException e, String s) {
                        e.printStackTrace();
                        Toast.makeText(MainActivity.this, "加载失败", Toast.LENGTH_SHORT).show();
                    }
                });
    }
    /*销毁当前Activity时,取消请求*/
    @Override
    protected void onDestroy() {
        super.onDestroy();
       
handler.cancel();
    }
}

这样,会将百度上的文本数据请求并显示在TextView上。

1.downlo()下载数据:

@ContentView(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {
@ViewInject(R.id.textView)
    private TextView textView;
    @ViewInject(R.id.imageView)
    private ImageView imageView;
    private HttpUtils httpUtils;
    private String path="https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png";
    private HttpHandler<File> download;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ViewUtils.inject(this);
        //得到HttpUtils实例,参数:设置请求超时时间,返回值为HttpHandler<File>
        httpUtils = new HttpUtils(5000);
      //调用download()方法

//其他参数不再去说,第五个参数,设置为true即为断点续传。
        download = httpUtils.download(HttpRequest.HttpMethod.GET, path,
                new File(Environment.getExternalStorageDirectory(), "abc.png").getAbsolutePath(),
                null, true, new RequestCallBack<File>() {


                    @Override
                    public void onSuccess(ResponseInfo<File> responseInfo) {
                        File result = responseInfo.result;
                        Bitmap bitmap = BitmapFactory.decodeFile(result.getAbsolutePath());
                        imageView.setImageBitmap(bitmap);
                        Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT).show();
                    }
                    /*正在加载时回调*/
                    @Override
                    public void onLoading(long total, long current, boolean isUploading) {
                        super.onLoading(total, current, isUploading);
                        textView.setText("百分比:"+(float)current/total*100+"%");
                    }

  /*加载失败时回调*/
                    @Override
                    public void onFailure(HttpException e, String s) {
                        Toast.makeText(MainActivity.this, "失败", Toast.LENGTH_SHORT).show();
                    }
                });
    }
    /*销毁当前Activity时,取消请求*/
    @Override
    protected void onDestroy() {
        super.onDestroy();
        download.cancel();
    }
}

这样,就搞定了!


Android封装的http请求实用工具类 代码如下:import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.URLEncoder;import java.security.KeyStore;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Map.Entry; import org.apache.http.HttpResponse;import org.apache.http.HttpVersion;import 立即下载

相关推荐

IPD的分析工具与模型(十六)CBB公用基础模块管理实现资源共享,缩短开发周期

CBB流程的开发环节,基于CBB规划中所识别和设计的CBB,进行CBB的详细设计(包括参数设计和接口设计),并最终实现CBB的落地开发。作为特殊类型的技术构件,CBB的开发流程,可沿用技术开发中的构件开发流程,具体包括概念、计划、开发和迁移等步骤,具体可参见前文的相关介绍。有了蓝图与架构设计,落地实施是关键攻坚。具体工作内容包括:具体工作内容包括:a. 以相似性、聚类、相对独行性、可组合、可扩展性、可维护性等原则为指导,按照产品的功能特征和业务类型,聚焦零散的功能点,形成功能模块,实现产品功能模块的划分;

corgi2020的博客 2001

使用handler和Message获取xutils发送POST请求从服务器端返回数据

注意:应该在handleMessage中处理从服务器返回的数据,否则会因为线程问题拿不到结果。另外可以在onSuccess方法中更新UI,因为xutils封装了handler。 public class MainActivity extends Activity{ private String responseInfo; private Handler handler;

bingqingsuimeng的专栏 1227

5分钟搞定:用Ollama在MacBook上本地运行Qwen3大模型(附避坑指南)

本文详细介绍了如何在MacBook上使用Ollama快速部署和运行Qwen3大模型,包括安装步骤、性能优化技巧及常见问题解决方案。Ollama作为一款轻量级工具,特别适合M系列芯片的Mac用户,支持多种量化版本,显著降低资源消耗,提升推理速度。

sql99的博客 822

3. Android框架和工具之 xUtils(HttpUtils)

1.HttpUtils 作用: 支持同步,异步方式的请求; 支持大文件上传,上传大文件不会oom; 支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD请求; 下载支持301/302重定向,支持设置是否根据Content-Disposition重命名下载的文件; 返回文本内容的GET请求支持缓存,可设置默认过期时间和针对当前请求的过期时间。 2.H...

weixin_30273175的博客 251

抖音直播行为规范考试

抖音直播行为规范考试

Q1642968641的博客 1万+

Flannel,Calico 和 Cilium 之间有哪些优缺点和差别?

例如,在一个多租户的容器集群中,可以通过Calico为不同租户的容器设置精细的访问控制策略,确保每个租户的资源安全。例如,在设置复杂的网络策略和BGP路由时,需要对网络概念和Calico的配置语法有比较深入的了解。它可以根据容器的标签、服务等信息来定义访问规则,并且可以实现更加细粒度的网络安全策略,如HTTP层的策略。性能损耗:在overlay网络模式下(如VXLAN),由于需要对数据包进行额外的封装和解封装操作,会带来一定的性能损耗,尤其是在高流量的场景下,这种性能损耗可能会更加明显。

chinansa的博客 1529

android-----XUtils框架之HttpUtils源码分析

之前我们对Volley框架源码进行了分析,知道了他适用于频繁的网络请求,但是不太适合post较大数据以及文件的上传操作,在项目中为了弥补Volley的这个缺陷,使用了XUtils框架的HttpUtils实现了文件上传的操作,上一篇博客我们通过HttpUtils实现了照片上传的实例,见:android-----基于XUtils客户端以及服务器端实现,当然文件上传的方法类似于照片上传,只不过在传参的个

扇扇来驰的博客 7376

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(二)

《拉依达的嵌入式\驱动面试宝典》 整合了所有我认为可能遇到的技术面试问题。所有问题及其答案均是我个人学习后查阅资料总结,每个回答都做了仔细的分析,在嵌入式及其驱动面试相关问题解析做到全网独一无二。学习或者转行到嵌入式、驱动开发领域学习的不二之选

拉依达不拉跨的博客 578

Android HttpUtils-Http请求的工具类

HttpUtilss是一个Http请求的工具类 功能: 1.异步的Get请求 2.异步的Post请求 3.Get请求,获得返回数据 4.向指定 URL 发送POST方法的请求 import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.IOException; import j

zhujb 1300

Origin教程004:Origin图形导出

需要编辑的话,双击图形,会自动用origin软件打开图形,这种方式是最开始导出图形的功能,方式一和二都是后面增加的。如果导出的图片边距较大的时候,会影响图片的美观,可以通过。也可以设置在PPT中直接编辑,找到。解决方法是,选择一条线,

WwLK123的博客 6332

Vue3 - 详解实现网站接入微信扫码登录功能,微信授权生成登录二维码用户用手机扫描二维码登陆,微信扫描二维码登录详细流程及示例代码,支持弹框式、浏览器单独新开页显示,最新vue集成微信扫码授权登录!

vue3,nuxt3,PC网站,网页,微信扫码登录,微信登陆,vue3微信扫码登录,获取个人信息,扫码登录后如何获取用户手机号,微信扫码授权登录,vue3详细实现微信扫一扫登陆,pc网页微信登录,vue3集成微信扫码登录,详细流程和示例源码,第三方扫码登录,vue3微信扫码登录怎么新开一页,跳页显示二维码,内嵌登录二维码,iframe,iframe新页面弹出,弹出一个小窗口显示登录二维码,登录报错,微信扫码没反应,解决手机点登录报错没反应,官方文档,手机扫描微信二维码登录网站,最好用的插件,vue-wxlo

🏆 前端领域优质创作者 1万+

android高级框架xUtils之HttpUtils

xUtils简介: xUtils 是一个工具类的集合体,其中包含许多实用的Android工具,主要包含四大模块:  1、 ViewUtils的模块(点击进入) 2、 HttpUtils的模块   3、  Bitmap的模块(点击进入) 4、 DbUtils的模块(点击进入) 现在开始学习HttpUtils,同样咋们还是以三部曲的方式来阐述这个问题: 一、添加权

program008的博客 2841

仿真学习系列(四十七):Sigrity仿真之直流压降与电流密度

在现代电子设计中,电源网络的设计和分析对于保证电路的稳定性至关重要。直流压降(IR-Drop)和电流密度是评估电源网络性能的关键参数,尤其是在高频和高速电路中。它们直接影响到设备的工作稳定性与效率。通过Sigrity的仿真工具,可以深入分析和优化这些电源特性,从而确保系统的可靠性。 本节将介绍直流压降和电流密度的基本概念,以及如何在Sigrity中使用PowerDC模块进行相关仿真。

案例文章,高速信号 510

XUtils3框架:Android开发四大核心模块实战指南

Android开发中,开源工具库能显著提升开发效率并减少样板代码。XUtils3作为轻量级框架,整合了数据库操作、网络请求、图片加载和视图注入四大核心模块,通过模块化设计支持按需引入。其技术价值体现在API简洁性上,例如数据库CRUD操作代码量可减少60%,网络请求简化为单行调用。框架深度适配Android生命周期,自动管理网络请求与界面销毁关联,有效避免内存泄漏问题。在应用场景上,XUtils3已被超过2.3万个Android项目采用,包括多个百万级用户的商业应用。对于开发者而言,掌握XUtils3的环境

weixin_30645617的博客 389

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

android高级框架xUtils之ViewUtils

xUtils 是一个工具类的集合体,其中包含许多实用的Android工具,使用这些工具将给我们的编程带来很多方便

program008的博客 1116

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Android开发:XUtils3环境搭建与核心功能详解

在Android开发中,工具库的选择与集成是项目搭建的关键环节。XUtils3作为一款集网络请求、数据库操作和图片加载于一体的综合工具库,通过封装常用功能模块显著提升开发效率。其核心原理是基于模块化设计,提供统一的API接口层,开发者只需简单配置即可快速实现Http请求、ORM映射等基础功能。技术价值体现在降低开发复杂度、减少样板代码量,特别适合中小型项目的快速迭代。典型应用场景包括移动应用数据持久化、图片异步加载和轻量级网络通信等场景。本文以Gradle 7.0+环境为例,详解XUtils3的依赖配置、初

400

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

android高级 xUtils 第三方框架的使

xUtils 首先xUtils属于第三方工具,有ViewUtils,httpUtils,BitmapUtils,DBUtils 四大模块,算是很旧的知识了,前不久刚出了xUtils3,可以去此连接查看https://github.com/wyouflf/xUtils3 关于它的详解,xUtils的网址在https://github.com/wyouflf/xUtils 目前xUtils

AlwaysDebug的博客 1337

Android 用80行代码 封装最简单网络请求 HttpUtils

在小型项目中,实现最简单最高效的网络请求封装 轻量化,不借助除okhttp以外的三方框架 单个类实现,且可读性高,扩展性高 最少的代码行数,最简单的调用方式

赵星海 952

Android 网络连接:HttpUtils 的GET、POST与注解

最近几天学习了好多种网络连接的方式,为了更好地区分他们,这里简单说明一下,所有的网络连接都是基于我们的TCP/IP模式进行的,从开始的URLConnection到HttpUrlconnection、HttpClient、Volley、HttpUtils全部都是。其中HttpUrlconnection、HttpClient是apache推出的封装类,但是二者在Android上不很适合,goole之后就

danfengw的博客 5701

Android学习之xUtils --- HttpUtils模块

HttpUtils是解决日常工作过程中繁杂的上传下载文件以及各种Get和post请求的必备工具类。 通过这个类, 非常方便的进行网络访问下载等操作,不必再再写那么冗长的代码。 HttpGet请求 和 HttpPost请求   Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。 其中最常用的就是GE...

aichanbin3586的博客 236

https请求httputil方法的使用实例get,post,put

https请求httputil方法的使用实例get,post,put

可可的博客 2392

Android开发之最火的开源框架之一Xutils2详解(摘自开源作者官方介绍详解)

此框架说实话还是挺不错的,挺好用的,功能多,所以我也用过。 由于优快云博客写的字数有限制,所以全文的用法打包成了markdown 文件,因为markdown真的太还用了。 全文下载地址为: http://download.youkuaiyun.com/detail/qq_21376985/9561669 为了尊重原创,特先贴出原作者关于xutils2的地址: https://github.co...

技术博客 258

<<第一行代码>>--自定义HttpUtils类并使用回调获取服务器返回数据

在<<第一行代码>>一书中学习到的技巧,再此实验整合:在编写网络应用时,我们经常会用到发送Http请求的地方,然而每次发送Http请求的代码几乎是相同的,所以通常情况下,我们将这些通用的网络操作提取到一个公共类里,并提供一个静态方法。(类似简单工厂模式)

成成成成成成成成成成成成成成丶 2056

java中如何使用http工具类请求已有URL路径,并获取response结果

使用http工具类访问已有URL路径的方式有很多种。下面做一下简单介绍: 1,使用HttpUtil工具 String apiUrl = "https://api.jianzhugang.com/v1/pub/"; Boolean flag = true ; List<GroupInfo> groupInfoList = new ArrayList<>(); Map<String, Object> map = new Has

b_ingrem的博客 1217

Android Http相关辅助类 HttpUtils

package utils; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWrite...

洪勇坤的博客 2055
上一篇: Android中图片的二次采样示例
下一篇: Android高级之xUtils框架(三)BitmapUtils
FightFightFight
博客等级 码龄11年 508粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值