android开源框架android-async-http详细的使用介绍
2016-01-13 17:59
936 查看
1.在介绍android-async-http之前先和volley框架比较一下
volley更适用于数据交换比较频繁,数据的大小比较小数据量比较多的时候使用
android-async-http更适用于上传或者下载比较大的文件
2.android-async-http的特征
处理异步的http请求,并通过匿名内部类处理回调结果,Http异步请求均位于非UI线程,
不会阻塞UI操作。通过线程池处理并发请求处理文件上传、下载、响应结果自动化打包JSON格式
,自动处理连接断开时请求重连。
3.集成步骤
首先在官网下载点击打开链接导入工程中libs文件夹下并添加到工程路径即可。
在使用的时候还需要添加
发送一个简单的get请求
请求参数设置
创建一个RequestParams添加请求参数
添加一个参数的时候使用
现在上传一个文件或者字节数组
//创建一个请求对象
AsyncHttpClient client2 = new AsyncHttpClient();
//在设置参数的时候 可以添加一个流对象
RequestParams params1 = new RequestParams();
//添加一个数组在io流中
// ByteArrayInputStream in = new ByteArrayInputStream("jkjk".getBytes());
// params1.put("key",in,"文件名字");
// 创建一个文件流
// try {
// FileInputStream in = new FileInputStream("文件路径");
// params1.put("key",in,"文件名字");
// } catch (FileNotFoundException e) {
// e.printStackTrace();
// }
//直接将文件传输
//创建一个文件的路径
String path = "文件的路径";
try {
params1.put("key",new File(path),"文件传输类型");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
client2.post(this, "网络地址", params1, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int i, Header[] headers, byte[] bytes) {
}
@Override
public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
}
});
做文件的下载
使用 FileAsyncHttpResponseHandler 处理器处理
AsyncHttpClient client3 = new AsyncHttpClient();
client3.get("下载地址", new FileAsyncHttpResponseHandler(this) {
//失败
@Override
public void onFailure(int i, Header[] headers, Throwable throwable, File file) {
}
//成功
@Override
public void onSuccess(int i, Header[] headers, File file) {
//打印存储路径
System.out.print(file.getAbsolutePath());
//创建建一个你要存储的路径
String path = "路径";
try {
//获得文件流
InputStream inputStream = new FileInputStream(file);
//创建文件输出流
OutputStream outputStream = new FileOutputStream(path);
int len = -1;
byte[] b = new byte[1024];
while((len=inputStream.read(b))!=-1){
outputStream.write(b,0,len);
outputStream.flush();
}
inputStream.close();
outputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
android-async-http也可以获取json数据使用的是JsonHttpResponseHandler(在这里不介绍了)
volley更适用于数据交换比较频繁,数据的大小比较小数据量比较多的时候使用
android-async-http更适用于上传或者下载比较大的文件
2.android-async-http的特征
处理异步的http请求,并通过匿名内部类处理回调结果,Http异步请求均位于非UI线程,
不会阻塞UI操作。通过线程池处理并发请求处理文件上传、下载、响应结果自动化打包JSON格式
,自动处理连接断开时请求重连。
3.集成步骤
首先在官网下载点击打开链接导入工程中libs文件夹下并添加到工程路径即可。
在使用的时候还需要添加
compile 'cz.msebera.android:httpclient:4.4.1.1'
发送一个简单的get请求
<span style="font-size: 18px;"> </span><span style="font-size:14px;"> </span><span style="font-size:14px; white-space: pre;"> </span><span style="font-family:SimHei;font-size:12px;">//创建一个请求对象 AsyncHttpClient client = new AsyncHttpClient(); //使用get方法发送一个请求 参数是网络请求的地址,和成功失败的回调 client.get("http://baidu.com/", new AsyncHttpResponseHandler() { @Override public void onSuccess(int i, Header[] headers, byte[] bytes) { //bytes 是访问成功返回的数据 打印返回结果 String info = new String(bytes); System.out.print(info); } @Override public void onFailure(int i, cz.msebera.android.httpclient.Header[] headers, byte[] bytes, Throwable throwable) { //如果失败 打印访问失败的数据 String info = new String(bytes); System.out.print(info); } });</span>
请求参数设置
创建一个RequestParams添加请求参数
<span style="font-size:14px;"></span><pre name="code" class="java"> <span style="font-family: SimHei; font-size: 14px;">//设置请求的参数 原理和hashmap相似</span>RequestParams requestParams = new RequestParams(); requestParams.put("key","value"); requestParams.put("more","data");
添加一个参数的时候使用
RequestParams requestParams = new RequestParams("key","value");创建一个带参数的post请求
<span style="font-size: 18px;"> </span><span style="font-family:SimHei;font-size:14px;"> <span style="white-space:pre"> </span>//创建一个请求对象 AsyncHttpClient client1 = new AsyncHttpClient(); //设置参数 RequestParams params = new RequestParams(); params.put("参数的key","参数的value值"); //创建post请求 client1.post("post请求的网络地址", params, new AsyncHttpResponseHandler() { @Override public void onSuccess(int i, Header[] headers, byte[] bytes) { } @Override public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) { } });</span>
现在上传一个文件或者字节数组
//创建一个请求对象
AsyncHttpClient client2 = new AsyncHttpClient();
//在设置参数的时候 可以添加一个流对象
RequestParams params1 = new RequestParams();
//添加一个数组在io流中
// ByteArrayInputStream in = new ByteArrayInputStream("jkjk".getBytes());
// params1.put("key",in,"文件名字");
// 创建一个文件流
// try {
// FileInputStream in = new FileInputStream("文件路径");
// params1.put("key",in,"文件名字");
// } catch (FileNotFoundException e) {
// e.printStackTrace();
// }
//直接将文件传输
//创建一个文件的路径
String path = "文件的路径";
try {
params1.put("key",new File(path),"文件传输类型");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
client2.post(this, "网络地址", params1, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int i, Header[] headers, byte[] bytes) {
}
@Override
public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
}
});
做文件的下载
使用 FileAsyncHttpResponseHandler 处理器处理
AsyncHttpClient client3 = new AsyncHttpClient();
client3.get("下载地址", new FileAsyncHttpResponseHandler(this) {
//失败
@Override
public void onFailure(int i, Header[] headers, Throwable throwable, File file) {
}
//成功
@Override
public void onSuccess(int i, Header[] headers, File file) {
//打印存储路径
System.out.print(file.getAbsolutePath());
//创建建一个你要存储的路径
String path = "路径";
try {
//获得文件流
InputStream inputStream = new FileInputStream(file);
//创建文件输出流
OutputStream outputStream = new FileOutputStream(path);
int len = -1;
byte[] b = new byte[1024];
while((len=inputStream.read(b))!=-1){
outputStream.write(b,0,len);
outputStream.flush();
}
inputStream.close();
outputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
android-async-http也可以获取json数据使用的是JsonHttpResponseHandler(在这里不介绍了)
相关文章推荐
- Android实现表情 抓取新浪表情
- 详解Android解析Xml的三种方式——DOM、SAX以及XMLpull
- android开发环境遇到adt无法启动的问题分析及解决方法
- Android开发 旋转屏幕导致Activity重建解决方法
- Android开发技巧之在a标签或TextView控件中单击链接弹出Activity(自定义动作)
- Android开发技巧之ViewStub控件惰性装载
- PHP 开源框架22个简单简介
- 分享10个很棒的学习Android开发的网站
- android开发之横向滚动/竖向滚动的ListView(固定列头)
- Android网络请求库android-async-http介绍
- Android开发技巧之我的菜单我做主(自定义菜单)
- JavaScript跨平台的开源框架NativeScript
- Python六大开源框架对比
- 分享15个最受欢迎的Python开源框架
- 六款值得推荐的android(安卓)开源框架简介
- 2月27日FreeEast每日构建版、FreeEast稳定版本、FreeEastWeb同时更新
- Windows下使用Apache Cordova开发ANDROID之HelloWorld
- 掌握主流框架的源码实现,理解框架背后的思想(续) 3ff0
- 根据根据图片的url怎么取得图片ImageView对象