Android Asynchronous Http Client的用法实例(详解+源码)

基本使用——OkHttp3详细使用教程 概述 OkHttp现在应该算是最火的Http第三方库,Retrofit底层也是使用OkHttp,网上很多教程都写的不错,但是有些我认为重要的知识,大多一笔带过,所以我决定写一篇入门文章 OkHttp官网地址:http://square.github.io/okhttp/ OkHttp GitHub地址:https://github.com/square/okhttp 出现背景 网络... 阅读详情

有用网址:http://www.android100.org/html/201506/19/155632.html

From:http://blog.youkuaiyun.com/bruce_shan/article/details/50516692

安卓 客户端与后台进行通信有两种办法,即HTTP通信和 socket通信,我们这里采用的是HTTP通信的通信方式,基于TCP/IP协议簇。

先来比较一下几种HTTP通信方式

一, HttpUrlConnection

// http地址
String httpUrl = "http://192.168.1.1:8080/GourmetOrderServer/loginServlet?name=jun&paw=123456";
// 获得的数据
String resultData = "";
URL url = null;
try {
//第一步   构造一个URL对象
url = new URL(httpUrl);
} catch (MalformedURLException e) {
Log.e(DEBUG_TAG, "MalformedURLException");
}
if (url != null) {
try {
// 使用HttpURLConnection打开连接
HttpURLConnection httpURLConnection = (HttpURLConnection) url
.openConnection();
// 得到读取的内容(流)
InputStreamReader inputStreamReader = new InputStreamReader(
httpURLConnection.getInputStream());
// 为输出创建BufferedReader
BufferedReader bufferedReader = new BufferedReader(
inputStreamReader);
String inputLine = null;
// 使用循环来读取获得的数据
while (((inputLine = bufferedReader.readLine()) != null)) {
// 我们在每一行后面加上一个"\n"来换行
resultData += inputLine + "\n";
}
// 关闭InputStreamReader
inputStreamReader.close();
// 关闭http连接
httpURLConnection.disconnect();
// 设置显示取得的内容
if (resultData != null) {
mTextView.setText(resultData);
} else {
mTextView.setText("读取的内容为NULL");
}
} catch (IOException e) {
Log.e(DEBUG_TAG, "IOException");
}
} else {
Log.e(DEBUG_TAG, "Url NULL");
}
}
二, 

AsyncHttpClient


AsyncHttpClient的Post和GET方式进行实现的关键代码:

/**

     * 采用AsyncHttpClient的Post方式进行实现
     * @param userName
     * @param userPass
     */
public void loginByAsyncHttpClientPost(String userName, String userPass) {
AsyncHttpClient client = new AsyncHttpClient(); // 创建异步请求的客户端对象
String url = "http://192.168.1.1:8080/GourmetOrderServer/loginServlet?name=jun&paw=123456"; // 定义请求的地址
// 创建请求参数的封装的对象
RequestParams params = new RequestParams();
// 设置请求的参数名和参数值
params.put("username", userName);
// 设置请求的参数名和参数
params.put("userpass", userPass);
        //执行post方法
client.post(url, params, new AsyncHttpResponseHandler() {

@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
if (statusCode == 200) {  
                   //显示文本  
                  Toast.makeText(LoginActivity.this, new String(responseBody), 1).show();  
               }  
}

@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
error.printStackTrace();// 把错误信息打印出轨迹来  
}
});
}
    /**
     * 采用AsyncHttpClient的Get方式进行实现 
     * @param userName
     * @param userPass
     */
private void loginByAsyncHttpClientGet(String userName, String userPass) {
// 创建异步的客户端对象
AsyncHttpClient client = new AsyncHttpClient();
// 请求的地址
String url = "http://192.168.1.1:8080/GourmetOrderServer/loginServlet";
// 创建请求参数的封装的对象
RequestParams params = new RequestParams();
// 设置请求的参数名和参数值
params.put("username", userName);
// 设置请求的参数名和参数
params.put("userpass", userPass);
Log.i("mm", "到private void loginByAsyncHttpClientGet来了");


// 发送get请求的时候 url地址 相应参数,匿名回调对象
client.get(url, params, new AsyncHttpResponseHandler() {
public void onSuccess(int statusCode, Header[] headers,
byte[] responseBody) {
// 成功处理的方法
System.out
.println("statusCode-------------------" + statusCode);
// 遍历头信息
for (int i = 0; i < headers.length; i++) {
Header header = headers[i];
System.out.println("header------------Name:"
+ header.getName() + ",--Value:"
+ header.getValue());
}
Toast.makeText(LoginActivity.this, "登录成功!", 1).show();
}


@Override
public void onFailure(int statusCode, Header[] headers,
byte[] responseBody, Throwable error) {
// 失败处理的方法
Log.i("mm", "到onFailure来了"+"statusCode值"+statusCode+"headers值"+headers+"headers值"+ responseBody+ ""+error);
error.printStackTrace();

Toast.makeText(LoginActivity.this, "登录失败!", 1).show();
}
});

}

其他安卓网络请求库方式及其比较可以参考链接:

Android 各大网络请求库的比较及实战,android请求库实战-android100学习网

http://www.android100.org/html/201506/19/155632.html


通过以上可以看出来,

AsyncHttpClient这个请求库很好用,简单方便,具有一些很好的特点:

  • 所有请求在子线程中完成,请求回调在调用该请求的线程中完成
  • 使用线程池
  • 使用RequestParams类封装请求参数
  • 支持文件上传
  • 持久化cookie到SharedPreferences,个人感觉这一点也是这个库的重要特点,可以很方便的完成一些模拟登录
  • 支持json
  • 支持HTTP Basic Auth

用这个安卓客户端网络通信请求库的时候,首先注意


在Mainifest.xml里面添加一条网络权限许可(事实上只要与网络通信有关这条代码都要加上,这里提醒一下)


具体使用方法参见上面的代码;

主要的几个步骤如下:

               // 1.创建异步请求的客户端对象

               AsyncHttpClient client = new AsyncHttpClient(); 

               // 2.定义请求的地址
String url = "http://192.168.1.1:8080/GourmetOrderServer/loginServlet?name=jun&paw=123456";
// 3.创建请求参数的封装的对象
RequestParams params = new RequestParams();
// 4.设置请求的参数名和参数值
params.put("username", userName);
// 5.设置请求的参数名和参数
params.put("userpass", userPass);
                //6.执行post方法
client.post(url, params, new AsyncHttpResponseHandler() {
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
 if (statusCode == 200) {     
                }  
}
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
}
});
}

其他有什么问题或者想具体了解详细说明,可以参考官网  http://loopj.com/android-async-http/

其他参考链接   http://blog.csdn.NET/redarmy_chen/article/details/26980613

              http://blog.youkuaiyun.com/hil2000/article/details/13949513
             对服务器返回json数据的处理:http://blog.youkuaiyun.com/hil2000/article/details/13949513
             http://blog.youkuaiyun.com/yanbober/article/details/45307549
              http://www.cnblogs.com/hawkon/p/3593709.html
             http://www.cnblogs.com/angeldevil/p/3729808.html
             http://my.oschina.net/u/1246663/blog/196971
            http://www.tuicool.com/articles/mqme2e

也可以参考我的另外两篇博文,我也是在边学习,然后边记录下这些


第 36 章:电话与 RIL 无线接口层是 Java 电话框架和厂商调制解调器固件之间的桥梁。早期 RIL 是 C 语言守护进程 rild,通过 Unix 套接字、自定义二进制协议与框架通信。Android12 及以后迁移到稳定 AIDL HAL,把旧的单体 IRadio HIDL 接口拆分为多个按业务域划分的 AIDL 接口。# 列出全部radio‑hal aidl文件# 统计IRadioVoice接口方法数量# 统计IRadioData接口方法数量# 查看语音通话数据结构体Call.aidl。 阅读详情

相关推荐

技术博客人格化:从.NET开发者视角重构内容生产逻辑

技术博客的本质不是知识搬运,而是构建可信赖的技术对话场域。理解‘人格化技术传播’需先厘清其底层原理:它将抽象API、语法特性与真实开发者的认知路径、调试行为、决策压力深度耦合;其技术价值在于弥合官方文档与工程实践之间的鸿沟,显著提升经验留存率与问题解决效率;典型应用场景包括技术选型决策、性能优化归因、调试异常诊断等高痛点多发领域;而‘老赵点滴’的实践表明,真正有效的技术内容必须锚定在开发者的人格轨迹(如调试截图、版本踩坑、环境元信息)与工程上下文(如Kubernetes资源限制、Azure DevOps流水

as2886089的博客 469

Asynchttpclient的使用及请求与响应封装

Asynchttpclient的使用及请求与响应封装 android-async-http 开源框架可以使我们轻松地获取网络数据或者向服务器发送数据,最关键的是,它是异步框架,在底层使用线程池处理并发请求,效率很高,使用又特别简单。 一、简单使用public static void reg(final Context cont,Bitmap photodata,String regData) {

染火枫林的专栏 1327

Android Asynchronous Http Client的用法实例

// 1.创建异步请求的客户端对象 AsyncHttpClient client = new AsyncHttpClient(); // 2.定义请求的地址 String url = "http://192.168.1.1:8080/GourmetOrderServer/loginServlet?name=jun&paw=123456"; // 3.创建请求参数的封装的对象 RequestParams params = new RequestParams(); // 4.设置请求的参数名和参数值 params.put("username", userName); // 5.设置请求的参数名和参数 params.put("userpass", userPass); //6.执行post方法 client.post(url, params, new AsyncHttpResponseHandler() { public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { if (statusCode == 200) { } } public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { } }); } 其他有什么问题或者想具体了解详细说明,可以参考官网 http://loopj.com/android-async-http/ 其他参考链接 http://blog.youkuaiyun.com/redarmy_chen/article/details/26980613

AsyncHttpClient的使用

最近一直忙着出差,也没时间更新博客,现在回来了,可以正常的更新博客了。 AsyncHttpClient简介 AsyncHttpClient是专门针对Android在Apache的HttpClient基础上构建的异步的callback-based http client,可以大大简化网络请求操作,它的所有请求都是独立在UI主线程之外,通过回调方法处理请求结果,采用android  Handler...

wen_haha的博客 2032

MATLAB功率谱函数psd与pwelch的使用

在网上看到 clear; Fs=1000; n=0:1/Fs:1; y=cos(2*pi*40*n)+3*cos(2*pi*100*n)+randn(size(n)); Nfft=1000; window=hanning(100); noverlap=20; dflag='none'; [Pxx,f]=psd(y,Nfft,Fs,window,noverlap); figure plot(f,10*log10(Pxx)); xlabel('frequency/Hz');ylab

qq_41687938的博客 2万+

Vivado2019.1 ZYNQ7020无Uart SDK调试打印调试信息xil_printf

Vivado2019.1 ZYNQ7020无Uart SDK调试打印调试信息xil_printf

泛红尘的博客 2998

AsyncHttpClient Best Practice

AsyncHttpClient是一款开源的Java异步Http和WebSocket 客户端官方原文 Asynchronous Http and WebSocket Client library for Java Async Http Client library purpose is to allow Java applications to easily execute HTTP req

Ricky 2861

LS-DYNA壳单元冲击仿真中的5个关键设置:以方管碰撞为例(含沙漏控制参数)

本文以方管碰撞为例,深入解析了LS-DYNA壳单元冲击仿真中的五个关键设置。重点探讨了沙漏控制参数(如IHQ=4)的选择逻辑、自接触算法优化、能量监控方法、材料模型(MAT_24)的真实应力-应变曲线与应变率效应设置,以及单元公式的选取。这些核心设置共同决定了仿真的精度与效率,是确保方管冲击仿真结果可靠性的基石。

salt的博客 626

Android Asynchronous Http Client 中文教程

本文为译文,原文链接https://loopj.com/android-async-http/ 安卓异步http客户端 概述 这是一个异步的基于回调的Android http客户端,构建于Apache httpclient库上。所有的请求都是独立于UI线程的,与此同时回调会由handler在发起请求的线程中执行。你也可以在后台线程和服务中使用它,这个库会自动识别它的运行环境。 特点 异步

SimonXiaoZhou的专栏 1205

Quartz定时任务调度框架中的Misfire策略实战解析

本文深入解析了Quartz定时任务调度框架中的Misfire(失火)处理策略。针对SimpleTrigger和CronTrigger两种常用触发器,详细对比了其各自的Misfire指令(如NowWithExistingCount、FireAndProceed等)的核心行为与适用场景,并提供了基于不同业务需求(如数据补跑、时间点敏感度)的实战选型指南,帮助开发者构建更健壮可靠的任务调度系统。

weixin_29250573的博客 77

CorelDRAW 2019安装指南:从下载到激活的完整步骤

本文提供了一份详细的CorelDRAW 2019安装指南,涵盖从下载安装包、检查系统环境到完成激活的完整步骤。文章重点解析了安装过程中的关键选项设置,并分享了首次启动后的优化配置与常见问题解决方案,旨在帮助用户高效、顺利地完成这款经典矢量设计软件的安装与配置。

weixin_29213827的博客 842

关于开源框架Android Asynchronous Http Client的分析

android-async-http开源框架是基于Apache HttpClient 的网络框架,可以使我们轻松的获取网络数据或者向服务器发送数据,使用起来比较简单 PS: 虽然Google官方推荐使用HttpUrlConnection(更加轻量级),但是该框架源码还是可以学习到JAVA的一些设计模式秒处,对自己设计框架很有帮助。源码网址:https://github.com/loopj/and

u014254637的专栏 3340

STM32Cube高效开发教程<高级篇><FreeRTOS>(十八)-----软件定时器

一、 软件定时器概述声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。本专栏博客参考《STM32Cube高效开发教程(高级篇)》,有意向的读者可以购买正版书籍辅助学习,本书籍由王维波老师、鄢志丹老师、王钊老师倾力打造,书籍内容干货满满。在FreeRTOS中,自动创建的任务有空闲任务和定时器服务任务。FreeRTOS可以通过定时器服务任务提供软件定时器功能。在某些对定时精度要求不太高,无须使用硬件定时器的情况下,我们可以使用FreeRTOS的软件定时器。

我的博客 157

android异步网络连接开源:Android Asynchronous Http Client

之前使用过James Smith的samrtImageView组件,发现很好用,在他的github发现还有一个Android Asynchronous Http Client,发现也不错,着这里介绍给大家。基于异步方式执行android内置的apache httpClient组建,http请求在UI线程之外,封装了get/post,支持多文件上传,尺寸小,优化为移动网络连接智能自动请求充实,自动g

码农明明 2870

【AI大模型应用开发实战】大型语言模型评估指南白皮书(LLM Eval)

近年来,大型语言模型(LLM)在自然语言处理领域取得了重大进展,例如 GPT-3 和 Chat-GPT。这些模型经过大型数据集的训练,在文本相关任务中表现出卓越的能力,甚至超越了人类。本文将简要介绍如何验证 LLMs 性能的评估指标。自然语言处理(NLP)是人工智能的一个领域,涉及计算机和人类语言之间的交互。NLP 的基本任务之一是语言建模 (LM),它涉及构建统计模型来分析和生成自然语言。LM 已成为推进机器语言智能的关键方法,使机器能够执行机器翻译、情感分析和对话系统等任务。

AI天才研究院 1017

9.6华为OD机试真题 新系统【仓储货物有序出库】

华为OD机试真题 新系统【仓储货物有序出库】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【仓储货物有序出库】多语言题解。

qq_45776114的博客 893

Android开源库--Asynchronous Http Client异步http客户端

如果说我比别人看得更远些,那是因为我站在了巨人的肩上。 github地址:https://github.com/loopj/android-async-http Api文档地址:http://loopj.com/android-async-http/doc/ http通信作为开发android最基本的模块,相信大家开发网络应用时都会需要用到。 在初学android的时候自己通过Apache...

weixin_33937913的博客 123

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Android异步HTTP客户端完整指南:如何快速集成高效网络请求

Android异步HTTP客户端(android-async-http)是一款基于Apache HttpClient库构建的异步回调式Android HTTP客户端,专为Android应用提供高效、稳定的网络请求解决方案。本文将为新手开发者提供完整的集成指南,帮助你快速掌握这个强大的网络请求库的使用方法,优化应用性能并提升用户体验。🚀 ## 📋 为什么选择Android异步HTTP客户端?

gitblog_00781的博客 659

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Android异步HTTP客户端终极指南:构建高性能网络应用的专业方案

Android Async Http Client是一款基于Apache HttpClient构建的异步回调式Android HTTP客户端库,它为Android开发者提供了简洁高效的网络请求解决方案。在前100字的介绍中,android-async-http的核心优势在于其轻量级设计(仅60KB)和强大的异步处理能力,能够显著提升Android应用的网络性能和用户体验。 ## 🚀 为什么An

gitblog_00317的博客 220

IMSL CNL 7.0.0 (x86-64)Crack

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

Android异步HTTP客户端深度解析:企业级网络通信架构设计

Android-async-http是一款基于Apache HttpClient构建的异步回调式Android HTTP客户端库,专为Android开发者提供高效、可靠的网络通信解决方案。该库采用回调机制实现非阻塞式网络请求处理,确保应用UI线程的流畅性,特别适合需要处理实时数据流、高并发请求的企业级移动应用场景。本文将深度解析其架构设计原理、核心实现机制、性能优化策略及高级应用场景。 ## 概

gitblog_00784的博客 688

Android Asynchronous Http Client

概述 Android Asynchronous Http Client是基于异步回调的Android内置的Apache HttpClient库HTTP客户端。所有的请求都是在你的应用程序的主要用户界面之外,但任何回调逻辑都会在同一个线程上执行,因为回调是使用安卓的处理程序消息传递的。您还可以在服务或后台线程中使用它,库将自动识别上下文是哪个上下文的。 特征 1.利用版4.3.6上游HttpC

Code诗人的博客 538
上一篇: Android学习视频Mars-Android开发视频教程(全集)
下一篇: Web开发常见问题-tomcat端口被占用:严重: StandardServer.await: create[8005]:
It_BeeCoder
博客等级 码龄10年 967粉丝 238原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值