Android Asynchronous Http Client 网络请求 SDK
在 Android 的 SDK 中封装一些请求 http 的包,其中最常用的便是使用 HttpClient 了,我们一般都是自己定义一个 http 的工具类,然后把 get 和 post 方法封装起来,然后自己手动处理一些 http 的异常,值得注意的是 http 请求在 android 中是阻碍 UI 主线程的,所以必须开启新的线程在后台请求,所以这一来,发现只是发起一个 http 的请求就必须要做这么多事,而且自己封装的工具类也不一定是最好用的。
上面便是我以前的做法,本周在做 moya 的 app 时,重新审视了以前的代码,进行了一些重构。其中的一个地方便是使用了一个比较成熟的组件 android-async-http 来代替自己封装的 http 工具类,使用起来非常方便,省去了一些臃肿的代码,使代码总体看起来比较清晰。
Overview
android-async-http 是基于 Apache 的 HttpClient 异步 Http 请求封装类,全部 request 都是脱离 UI 主线程的。这个包已经非常成熟了,国外有名的 Instagram,Pinterest 等 apps 都在使用。
Installation & Basic Usage
下载最新的.jar 文件,在自己的 android app 中引用。
import com.loopj.android.http.*;
创建一个新的 AsyncHttpClient 实例并发起一个请求:
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://www.google.com", new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {
System.out.println(response);
}
});
建议的用法:创建一个静态基类 Http Client
import com.loopj.android.http.*;
public class BooheeClient {
private static final String BASE_URL = "http://www.boohee.com/api/";
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;
}
}
然后在整个工程的其他地方便很方便的调用:
import org.json.*;
import com.loopj.android.http.*;
class BooheeClientUsage {
public void getPublicTimeline() throws JSONException {
BooheeClient.get("moya_video", null, new JsonHttpResponseHandler() {
@Override
public void onSuccess(JSONObject video) {
// Pull out the first event on the public timeline
String normal_url = video.getString("normal_url");
// Do something with the response
System.out.println(normal_url);
}
});
}
}
上面的例子看到,对于 json 数据的处理也非常方便。不仅如此,还有其他更多的用法,如处理 cookie,上传、下载文件等。github 项目地址: android-async-http
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: Rails3 Route 常用用法
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论