android高级框架xUtils之HttpUtils

Android-通过制作HttpUtil工具类来便于进行Http通信 个人是在看郭神的第一行代码时知道的可以自己做一个HttpUtil类来方便Http的通信,只需要直接用工具类里的方法进行获得Response即可了。 这里写出我自己在制作HttpUtil类时用到的不同的方法(布局的话都是一个EditText,一个按钮一个文本框,没什么特别的就不贴出来了),本文偏向于使用AsyncTask进行异步调用,先放一下效果吧。 这里也因为速度太快了ProgressBa... 阅读详情
xUtils简介:
xUtils 是一个工具类的集合体,其中包含许多实用的Android工具,主要包含四大模块: 
1、 ViewUtils的模块(点击进入)
2、 HttpUtils的模块  
3、  Bitmap的模块(点击进入)

4、 DbUtils的模块(点击进入)


现在开始学习HttpUtils,同样咋们还是以三部曲的方式来阐述这个问题:

一、添加权限、和一些注意事项


  • 需要访问网络权限和写存储卡权限
  • httputils使用httpclient,最新的api23已经不支持httpclient
  • 可以降低编译版本(比如22)
  • 也可以导入httpclient的jar包,可以从http://hc.apache.org/downloads.cgi下载(httpcore和httpclient),也可以在as中搜索httpclient,选择com.hynnet:httpclient:4.5.1,下载并导入后,会出现冲突,需要在模块的gradle中的android块下配置包编译属性,排除冲突的配置文件:

packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
}

二、创建HttpUtils并做相关的配置

mHttpUtils = new HttpUtils();//最好整个应用一个实例

/**
 * 给httputils配置各种参数
 */
void configUtils(){
//设置线程池数量
mHttpUtils.configRequestThreadPoolSize(4);

//设置请求重试次数
mHttpUtils.configRequestRetryCount(3);

//设置响应编码
mHttpUtils.configResponseTextCharset("utf-8");

//设置请求超时时间
mHttpUtils.configTimeout(30000);

}
三、正式使用httpUtils来操作数据

  • 调用get方法获取数据

 /**
     * 发送get请求
     *
     */
    protected void sendGetRequest(){
        MyAppliction.httpUtils.send(
                HttpRequest.HttpMethod.GET,
                "https://www.baidu.com/",
                new RequestCallBack<String>() {
                    @Override
                    public void onSuccess(ResponseInfo<String> responseInfo) {
                        Log.i("sendGetRequest", responseInfo.result);
                    }

                    @Override
                    public void onFailure(HttpException error, String msg) {
                        Log.i("sendGetRequest", msg);
                    }
                });
    }

  • get方法也可以设置param

 /**
     * 使用带参数的方式方式get请求
     */
    protected void sendGetRuquest2(){
        String strUrl = "http://op.juhe.cn/yi18/news/newscalss";
        RequestParams params = new RequestParams();
        NameValuePair pair = new BasicNameValuePair("key","c90b25c724fea7c5d6207e352fb03c63");
        params.addQueryStringParameter(pair);

        MyAppliction.httpUtils.send(HttpRequest.HttpMethod.GET,
                strUrl,params, 
                new RequestCallBack<String>() {
                    @Override
                    public void onSuccess(ResponseInfo<String> responseInfo) {

                        Log.i("sendGetRuquest2",responseInfo.result);
                    }

                    @Override
                    public void onFailure(HttpException error, String msg) {

                        Log.i("sendGetRuquest2",msg);
                    }
                });
    }
  • 调用post方法获取数据
   /**
     * post请求
     */
    protected void sendPostRequest(){
        String strUrl = "http://op.juhe.cn/yi18/news/newscalss";
        RequestParams params = new RequestParams();
        NameValuePair pair = new BasicNameValuePair("key","c90b25c724fea7c5d6207e352fb03c63");
        params.addQueryStringParameter(pair);
        MyAppliction.httpUtils.send(HttpRequest.HttpMethod.POST,
                strUrl, params,

                new RequestCallBack<String>() {
                    @Override
                    public void onSuccess(ResponseInfo<String> responseInfo) {
                        Log.i("sendPostRequest","responseInfo "+responseInfo.result);
                    }

                    @Override
                    public void onFailure(HttpException error, String msg) {
                        Log.i("sendPostRequest",msg);
                    }
                });
    }

  • 文件下载
   /**
     * 文件下载
     */

    protected void downloadFile(){
        String strUrl = "http://apache.fayea.com//httpcomponents/httpclient/binary/httpcomponents-client-4.5.1-bin.zip";//下载文件的地址
        MyAppliction.httpUtils.download(strUrl,
                "/sdcard/httpclient.zip",//下载的文件保存的地址
                new RequestCallBack<File>() {
                    @Override
                    public void onSuccess(ResponseInfo<File> responseInfo) {
                        Log.i("downloadFile","ok");
                    }

                    @Override
                    public void onFailure(HttpException error, String msg) {
                        Log.i("downloadFile",msg);
                    }
                    //可以实时更新下载进度
                    @Override
                    public void onLoading(long total, long current, boolean isUploading) {
                        super.onLoading(total, current, isUploading);
                        String pross = current*100/total+"%";//计算下载进度
                        Log.i("downloadFile",pross);
                    }
                }
        );
    }

  • 文件上传
   /**
     * 上传文件
     */
    protected void uploadFiles(){
        String strUrl = "http://10.2.160.190/upload.php";//上传的目标地址
        RequestParams params = new RequestParams();//可以上传多个文件
        params.addBodyParameter("files[0]",new File("sdcard/kunkun.jpg"));
        params.addBodyParameter("files[1]",new File("sdcard/lastyear.jpg"));
        MyAppliction.httpUtils.send(HttpRequest.HttpMethod.POST, strUrl, params,
                new RequestCallBack<String>() {
                    @Override
                    public void onSuccess(ResponseInfo<String> responseInfo) {
                        Log.i("uploadFiles",responseInfo.result);
                    }

                    @Override
                    public void onFailure(HttpException error, String msg) {
                        Log.i("uploadFiles","msg "+msg);
                    }
                }
        );
    }




Android代码-UrlHttpUtils UrlHttpUtils 最简单的UrlHttpUtils封装,CallBack方法执行在UI线程。支持get请求,post请求,支持文件上传和下载。 使用方法: 代码很简单,只有五个Java文件,建议下载后将Java文件拷贝到工程中使用。 封装的功能有: 一般的get请求 一般的post请求 上传单个文件(包含进度) 上传list集合文件 上传map集合文件 文件下载(包含进度) 图片下载(实现了图片的压缩) 使用示例 GET请求 String url = "https://www.baidu.com/"; UrlHttpUtil.get(url, new CallBackUtil.Call 立即下载

相关推荐

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

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

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

weixin_30273175的博客 251

Android自定义网络连接工具类HttpUtil

本文实例为大家分享了Android网络连接工具类HttpUtil的使用方法,供大家参考,具体内容如下 该工具实现了发送get和post请求,请求的结果以String字符串的形式返回,比较适合接收服务器端发送过来的JSON字符串数据 get方法适合从服务器端获取数据 post方法适合发送数据到服务器端 使用的时候直接调用get或post方法就好 get方法传递一个url请求 post方法传递一个url请求和要发送到服务器端的数据params 接收数据后返回的是一个String字符串 HttpUtil.java public class HttpUtil{ /** * POST

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

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

扇扇来驰的博客 7376

计算机网络实验——入侵检测系统实验

在图1所示的网络结构中,此方案的具体实施:在路由器Router1的接口1出方向配置入侵检测策略,在收到ICMP ECHO请求包时,丢弃并同步向日志服务器报告警告,此时,终端PC2和PC3无法对终端PC0和PC1执行ping操作,并且日志服务器将记录相应的警告信息;在实验一的基础上,添加扩展分组过滤器,指定需要进行检测的信息流的类别,将扩展分组和对应的入侵检测规则进行绑定,使得只对特定的信息流进行入侵检测。加载指定类别的特征库,这里的指定类别是 ios_ips 类别中的 basic 子类别。

放放的博客 1563

ROS与UR10e机械臂实战:从零搭建到精准控制

本文详细介绍了如何从零开始搭建ROS与UR10e机械臂的开发环境,包括硬件准备、软件配置、网络设置以及MoveIt!运动控制实战。通过具体的代码示例和常见问题排查,帮助开发者快速掌握UR10e机械臂的精准控制技术,适用于工业自动化和实验室研究场景。

m3n5b7v8c9x的博客 772

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

RocketMQ5.3.0-control-多 Master 多 Salve-异步复制-集群搭建

RocketMQ5.3.0-control-多 Master 多 Salve-异步复制-集群搭建(详细文档)

m0_52369979的博客 730

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

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

赵星海 952

【参数配置】OpenClaw 的破解之道(Doom Loop)

本文深入解析了OpenClaw中的Doom Loop(死循环)问题及其应对策略。主要内容包括: Agent Loop的核心概念:基于ReAct范式,OpenClaw通过"思考-行动-观察"循环执行任务,但可能陷入无进展的死循环。 Doom Loop现象:Agent持续执行但任务进度为零,常见于四种工具调用场景:相同调用重复执行、调用不存在工具、轮询工具卡死、操作交替振荡。 OpenClaw的防御机制: 第一道防线:重试端断路器,通过上下文压缩熔断(最多3次)和总重试次数熔断(32-160次)防止无限重试。

海兰 4042

EXCEL VBA从入门到精通 前言

本书通过丰富的实例和案例,帮助读者更好地理解和应用Excel VBA编程,同时也介绍了常用的工具、资源、社区和协作平台等,方便读者进行进一步的学习和开发。我强烈推荐这本书给所有希望学习和掌握Excel VBA编程的读者。多样化的资源和工具介绍:本书介绍了丰富的工具和资源,包括官方文档、在线教程、代码库、论坛、博客等,方便读者进行进一步的学习和开发。详细的讲解和丰富的示例:本书从语法和对象开始讲解,通过丰富的实例和案例,帮助读者更好地理解和应用Excel VBA编程。第一节:什么是VBA 5。

1728

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

HttpUtils步骤很简单,不过需要注意几个细节。 一。步骤: 1.导入xUtils包, 2.得到HttpUtils实例, 3.调用send()或者download()进行网络请求操作, 4.取消请求。 二。注意: 1.当我们得到HttpUtils实例直接调用方法时,可能会出现错误,造成这个问题的原因是,你的API编译器是23的,而在android 6.0(API23)中,取消掉了

FightFightFight的博客 2299

项目管理知识体系(PMBOK)中的质量规划详解

你是否遇到过这些场景?软件上线后用户投诉“功能漏洞多”,团队连夜返工;装修完的房子墙面开裂,施工方和业主互相推诿;新研发的手机电池续航不达标,被迫延迟发布。这些问题的根源,往往是项目启动时没有做好质量规划。本文聚焦PMBOK中“质量规划”(Plan Quality Management)过程,覆盖其核心概念、操作步骤、工具技术与实战应用,适用于IT、建筑、制造等各类项目场景。

项目管理的博客 1118

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

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

weixin_30645617的博客 389

Android USB串口通信详解与实例

在Android开发中,USB串口通信是一个常见的需求,尤其是在与硬件设备进行交互时。通过USB串口,我们可以轻松地实现数据的发送与接收。本文将详细介绍如何使用库来实现Android设备与USB串口设备的通信。

m0_62153576的博客 678

C#联合Halcon机器视觉框架源码

本软件参考EV开发,共用模块,基于WPF+Halcon,是非常不错的学习框架,需要什么功能可以自己添加,插件式开发非常方便。

Z's Palace 4829

android高级框架xUtils之ViewUtils

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

program008的博客 1116

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

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

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

400

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

android高级 xUtils 第三方框架的使

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

AlwaysDebug的博客 1337

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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

Android自定义的网络连接工具类HttpUtil

Android网络连接工具类HttpUtil 该工具实现了发送get和post请求,请求的结果以String字符串的形式返回,比较适合接收服务器端发送过来的JSON字符串数据 get方法适合从服务器端获取数据 post方法适合发送数据到服务器端 使用的时候直接调用get或post方法就好 get方法传递一个url请求 post方法传递一个url请求和要发送到服务器端的数

梦工厂 5502

安卓开发——网络传输工具类HttpUtil(基于okhttp3)使用

AndroStudio开发: 使用时需先导入okhttp3依赖: com.squareup.okhttp3:okhttp:3.4.1 依赖导入步骤: File–》 ProjectStructure——》Dependencies–》All Modules–》右侧“+”号–>Library Dependency–>输入依赖名找到并安装即可 依赖导入完成后复制下方工具类代码到一个类中,使用时...

weixin_42062480的博客 1686

android hxgokhttputils 使用,【2024Android最新学习路线】

传入上下文。

839

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高级框架xUtils之BitmapUtils
下一篇: PopupWindow弹出窗的简单实现
program008
博客等级 码龄11年 5粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值