下载 1.4.3版本(最新)
或者我在github上餐桌
概观
基于异步回调HTTP客户端的Android内置Apache的HttpClient的库顶 。您的应用程序的主UI线程之外的所有请求,但使用Android的处理程序消息传递创建回调将在同一线程上执行任何的回调逻辑。
特点
- 异步的 HTTP请求,处理响应匿名回调
- HTTP请求发生在UI线程之外
- 请求使用一个线程池使用并发资源封顶
- GET / POST PARAMS建设者(RequestParams)
- 没有额外的第三方库的多部分文件上传
- 微小的尺寸到您的应用程序的开销,只有25KB的一切
- 优化的为参差不齐移动连接的智能自动请求重试
- 自动gzip响应的解码支持超快的请求
- 二进制文件(图像等)与
BinaryHttpResponseHandler
下载
- 内置响应解析成JSON
JsonHttpResponseHandler
- 持久性COOKIE存储,保存到你的应用程序的SharedPreferences里的饼干
热门应用程序和开发人员在生产中使用
Instagram的- Instagram的第1张照片的应用程序在Android上,有超过1000万用户
Pinterest的- 热门在线插接。组织和共享你所爱的东西。
前线突击队谷氨酸(Glu游戏)- #1第一人称射击游戏,在Android上,由Glu游戏。
Heyzap- 社交游戏与数以百万计的用户发现应用程序
提出- 姿势是排名第一的时尚应用程序共享和发现新的风格
数以千计的应用程序...- 异步HTTP在生产中使用由数千顶部的应用程序。
安装及基本用法
从github上下载最新的jar文件,并将其放置在您的Android应用程序的 库/
文件夹。
导入的http包装。
导入 com.loopj.android.http。* ;
创建一个新的AsyncHttpClient
实例,并提出一个请求:
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://www.google.com", new AsyncHttpResponseHandler() {@Overridepublic void onSuccess(String response) {System.out.println(response);}
});
推荐用途:做一个静态的HTTP客户端
在这个例子中,我们将一个HTTP客户端类的静态访问,使其易于沟通Twitter的API。
导入 com.loopj.android.http。* ;的公共 类 TwitterRestClient { 私人 静态 最终 字符串 BASE_URL = “http://api.twitter.com/1/的;私人 静态 AsyncHttpClient 客户端 = 新 AsyncHttpClient ();public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {client.get(getAbsoluteUrl(url), params, responseHandler);}public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {client.post(getAbsoluteUrl(url), params, responseHandler);}私人 静态 字符串 getAbsoluteUrl (弦乐 relativeUrl ) { 回报 BASE_URL + relativeUrl ; }
}
这使得它很容易在你的代码中使用Twitter的API:
进口 ORG JSON。* ;
进口 com.loopj.android.http * ;第一个事件公共时间轴的JSONObject firstEvent = 时间表得到(0 ); 弦乐 tweetText = firstEvent 的getString (“文本” );/ /做一些与响应系统。出来。调用println (tweetText ); } }); }
}
退房 AsyncHttpClient, RequestParams AsyncHttpResponseHandler Javadoc中更多的细节。
永久性的COOKIE存储与PersistentCOOKIEStore
这个库还包括一个PersistentCOOKIEStore
这是一个实施Apache HttpClient的COOKIEStore的
自动保存COOKIEs来SharedPreferences里
存储在Android设备上的接口。
这是非常有用的,如果你要使用COOKIEs来管理,因为用户身份验证会话保持登录后,即使关闭并重新打开你的应用程序。
首先,创建的一个实例AsyncHttpClient
:
AsyncHttpClient MyClient的 =: 新 AsyncHttpClient ();
现在设置客户端的COOKIE存储的活动或应用程序上下文(通常就足够了),构造一个新实例 PersistentCOOKIEStore
:
PersistentCOOKIEStore myCOOKIEStore = new PersistentCOOKIEStore(this);
myClient.setCOOKIEStore(myCOOKIEStore);
现在将存储在持久性COOKIE存储从服务器收到任何COOKIE。
要添加自己的饼干到店里,简单地构造一个新的COOKIE和呼叫的addCOOKIE
:
BasicClientCOOKIE newCOOKIE = new BasicClientCOOKIE("COOKIEsare", "awesome");
newCOOKIE.setVersion(1);
newCOOKIE.setDomain("mydomain.com");
newCOOKIE.setPath("/");
myCOOKIEStore.addCOOKIE(newCOOKIE);
参见更多信息的PersistentCOOKIEStore Javadoc。
添加GET / POST参数RequestParams
RequestParams
类可选GET或POST参数用于添加到您的要求。RequestParams
可以建成,并以各种方式建造:
创建空RequestParams
和立即加入一些参数:
RequestParams PARAMS = 新 RequestParams ();
PARAMS 。把(“钥匙” , “价值” );
PARAMS 。把(“多” , “数据” );
创建为单个参数RequestParams
:
RequestParams PARAMS =: 新 RequestParams (“单一” , “价值” );
从现有地图
的键/值字符串创建RequestParams
:
HashMap paramMap = new HashMap();
paramMap.put("key", "value");
RequestParams params = new RequestParams(paramMap);
更多信息见RequestParams的Javadoc。
与RequestParams
上传文件
RequestParams
类还支持多方文件上传,如下:
InputStream中
添加上传RequestParams的
:
InputStream myInputStream = blah;
RequestParams params = new RequestParams();
params.put("secret_passwords", myInputStream, "passwords.txt");
文件
对象添加给RequestParams
上传:
File myFile = new File("/path/to/file.png");
RequestParams params = new RequestParams();
try {params.put("profile_picture", myFile);
} catch(FileNotFoundException e) {}
字节数组添加上传RequestParams的
:
byte[] myByteArray = blah;
RequestParams params = new RequestParams();
params.put("soundtrack", new ByteArrayInputStream(myByteArray), "she-wolf.mp3");
更多信息见RequestParams的Javadoc。
下载二进制数据BinaryHttpResponseHandler的
可用于BinaryHttpResponseHandler
类提取二进制数据,如图像和其他文件。例如:
参见更多信息的BinaryHttpResponseHandler Javadoc。
添加HTTP基本身份验证凭据
有些要求可能需要用户名/密码,凭证处理时使用HTTP基本接入认证请求的API服务。您可以使用的方法setBasicAuth()
提供您的凭据。
设置用户名/密码,任何一台主机和领域为特定的请求。默认情况下,认证范围是任何主机,端口和境界。
AsyncHttpClient client = new AsyncHttpClient();
client.setBasicAuth("username","password/token");
client.get("http://example.com");
您也可以提供一个更具体的认证范围(推荐)
AsyncHttpClient client = new AsyncHttpClient();
client.setBasicAuth("username","password", new AuthScope("example.com", 80, AuthScope.ANY_REALM));
client.get("http://example.com");
更多信息见RequestParams的Javadoc。
从源代码构建
要建立一个从源代码的jar
文件,首先要android的异步HTTP github上库的克隆。然后,您需要复制 local.properties.dist的
文件local.properties
和编辑sdk.dir的
设置为指向,你必须安装Android SDK的。然后,您可以运行:
这将生成一个文件名 ??为安卓异步HTTP version.jar的
。
报告错误或功能要求
请报告任何错误或功能要求github的问题页面上为这个项目在这里:
https://github.com/loopj/android-async-http/issues
积分与提供者
詹姆斯?史密斯(http://github.com/loopj)- 创建者和维护者
弥Fivecoate(http://github.com/m5)- 主要贡献者,包括原
RequestParams
Droid的富项目(https://github.com/kaeppler/droid-fu)- 灵感和代码更好HTTP试
拉斐尔桑切斯(http://blog.rafaelsanches.com)- 原始
SimpleMultipartEntity
代码 安东尼?佩尔绍德(http://github.com/apersaud)- 增加了支持HTTP基本身份验证请求。
林登达林(http://github.com/coreform)- 新增支持二进制/图像响应
许可证
Android的异步HTTP客户端下发布的Andr??oid友好的Apache许可证2.0版。在这里阅读完整的许可证:
http://www.apache.org/licenses/LICENSE-2.0
作者简介
詹姆斯?史密斯,英国的企业家和开发商,总部设在旧金山。
我的联合创始人西蒙?梅纳德Bugsnag,2009至2012年,我带领产品团队Heyzap首席技术官。