标签:remote 情况 color 检查 component entity swa strong ejs
loopj.com android-async-http
基于Apache的HttpClient库的基于异步回调的Http客户端 。所有请求都是在应用程序的主UI线程之外进行的,但是任何回调逻辑将在相同的线程上执行,因为回调是使用Android的Handler消息传递创建的。你也可以在Service或后台线程中使用它,库会自动识别在哪个上下文中运行。
如果你也在寻找一个伟大的Android崩溃报告服务,我还建议检查我的公司,Bugsnag。
BinaryHttpResponseHandler
JsonHttpResponseHandler
FileAsyncHttpResponseHandler
BaseJsonHttpResponseHandler
SaxAsyncHttpResponseHandler
使用Gradle buildscript在格式中添加maven依赖
dependencies { compile ‘com.loopj.android:android-async-http:1.4.9‘ }
导入http包。
import com.loopj.android.http.*;
创建新AsyncHttpClient
实例并发出请求:
AsyncHttpClient client = new AsyncHttpClient(); client.get("https://www.google.com", new AsyncHttpResponseHandler() { @Override public void onStart() { // called before request is started } @Override public void onSuccess(int statusCode, Header[] headers, byte[] response) { // called when response HTTP status is "200 OK" } @Override public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) { // called when response HTTP status is "4XX" (eg. 401, 403, 404) } @Override public void onRetry(int retryNo) { // called when request is retried } });
在这个例子中,我们将使用具有静态访问器的http客户端类,以便于与Twitter的API进行通信。
import com.loopj.android.http.*; public class TwitterRestClient { private static final String BASE_URL = "https://api.twitter.com/1/"; private static AsyncHttpClient client = new 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); } private static String getAbsoluteUrl(String relativeUrl) { return BASE_URL + relativeUrl; } }
这使得它很容易在你的代码中使用Twitter API:
import org.json.*; import com.loopj.android.http.*; class TwitterRestClientUsage { public void getPublicTimeline() throws JSONException { TwitterRestClient.get("statuses/public_timeline.json", null, new JsonHttpResponseHandler() { @Override public void onSuccess(int statusCode, Header[] headers, JSONObject response) { // If the response is JSONObject instead of expected JSONArray } @Override public void onSuccess(int statusCode, Header[] headers, JSONArray timeline) { // Pull out the first event on the public timeline JSONObject firstEvent = timeline.get(0); String tweetText = firstEvent.getString("text"); // Do something with the response System.out.println(tweetText); } }); } }
有关更多详细信息,请参阅 AsyncHttpClient, RequestParams和AsyncHttpResponseHandler Javadoc。
PersistentCookieStore
这个库还包括一个PersistentCookieStore
Apache HttpClient CookieStore
接口的实现,它自动将Cookie保存到SharedPreferences
Android设备上的存储。
如果您要使用Cookie来管理身份验证会话,这是非常有用的,因为即使在关闭并重新打开应用程序后,用户仍将保持登录状态。
首先,创建一个实例AsyncHttpClient
:
AsyncHttpClient myClient = new AsyncHttpClient();
现在将此客户端的Cookie存储设置为一个新的实例 PersistentCookieStore
,使用活动或应用程序上下文构建(通常this
就足够了):
PersistentCookieStore myCookieStore = new PersistentCookieStore(this); myClient.setCookieStore(myCookieStore);
从服务器收到的任何cookie现在将存储在持久性cookie存储中。
要将自己的Cookie添加到商店,只需构建一个新的Cookie并调用addCookie
:
BasicClientCookie newCookie = new BasicClientCookie("cookiesare", "awesome"); newCookie.setVersion(1); newCookie.setDomain("mydomain.com"); newCookie.setPath("/"); myCookieStore.addCookie(newCookie);
有关详细信息,请参阅PersistentCookieStore Javadoc 。
RequestParams
本RequestParams
类用于可选的GET或POST参数添加到您的要求。RequestParams
可以以各种方式建造和建造:
创建空RequestParams
并立即添加一些参数:
RequestParams params = new RequestParams(); params.put("key", "value"); params.put("more", "data");
RequestParams
为单个参数创建:
RequestParams params = new RequestParams("single", "value");
RequestParams
从现有Map
的键/值字符串创建:
HashMap<String, String> paramMap = new HashMap<String, String>(); paramMap.put("key", "value"); RequestParams params = new RequestParams(paramMap);
有关更多信息,请参阅RequestParams Javadoc 。
RequestParams
该RequestParams
班还支持multipart文件,如下所示:
添加InputStream
到RequestParams
上传:
InputStream myInputStream = blah; RequestParams params = new RequestParams(); params.put("secret_passwords", myInputStream, "passwords.txt");
向上传的File
对象添加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 。
FileAsyncHttpResponseHandler
FileAsyncHttpResponseHandler
类可用于抓取的二进制数据,如图像和其他文件。例如:
AsyncHttpClient client = new AsyncHttpClient(); client.get("https://example.com/file.png", new FileAsyncHttpResponseHandler(/* Context */ this) { @Override public void onSuccess(int statusCode, Header[] headers, File response) { // Do something with the file `response` } });
有关详细信息,请参阅FileAsyncHttpResponseHandler Javadoc 。
在处理使用HTTP基本访问身份验证请求的API服务时,某些请求可能需要用户名/密码凭据。您可以使用该方法setBasicAuth()
提供您的凭据。
为特定请求的任何主机和领域设置用户名/密码。默认情况下,身份验证范围适用于任何主机,端口和领域。
AsyncHttpClient client = new AsyncHttpClient(); client.setBasicAuth("username","password/token"); client.get("https://example.com");
您还可以提供更具体的验证范围(推荐)
AsyncHttpClient client = new AsyncHttpClient(); client.setBasicAuth("username","password", new AuthScope("example.com", 80, AuthScope.ANY_REALM)); client.get("https://example.com");
有关更多信息,请参阅RequestParams Javadoc 。
您可以使用提供的示例应用程序在真实设备或仿真器上测试库。示例应用程序实现库的所有重要功能,您可以使用它作为灵感的来源。
示例应用程序的源代码:https://github.com/loopj/android-async-http/tree/master/sample
要运行示例应用程序,请克隆android-async-http github存储库并在其根目录中运行命令:
gradle :sample:installDebug
这将在连接的设备上安装示例应用程序,所有示例都立即工作,如果没有请在https://github.com/loopj/android-async-http/issues上报告错误报告
要从.jar
源代码构建一个文件,首先要克隆android-async-http github仓库。然后你必须安装Android SDK和Gradle buildscript,然后运行:
gradle :library:jarRelease
这将在路径中生成一个文件。{repository_root}/library/build/libs/library-1.4.9.jar
请在此项目的github问题页面上报告任何错误或功能请求:
https://github.com/loopj/android-async-http/issues
RequestParams
SimpleMultipartEntity
代码而许多其他人,贡献在许可证头中的每个文件中列出。您还可以通过查看Github上的项目提交,问题和请求来找到贡献者
Android异步Http客户端是在Android友好的Apache许可证版本2.0下发布的。在这里阅读完整的许可证:
https://www.apache.org/licenses/LICENSE-2.0
詹姆斯·史密斯,英国企业家和开发商总部设在旧金山。
标签:remote 情况 color 检查 component entity swa strong ejs
原文地址:http://www.cnblogs.com/endv/p/6536879.html