zoukankan      html  css  js  c++  java
  • android开源框架android-async-http

    这个很不错的第三方开源类库,针对Android开发中发送http请求的。

    它的网络请求自动在非UI线程里执行,你不需要任何额外的操作(比如手动new一个Thread之类)。项目的官方网站:
    http://loopj.com/android-async-http/,对应的github地址:https://github.com/loopj/android-async-http
     
    它是专门针对Android在Apache的HttpClient基础上构建的异步的callback-based http client。所有的请求
     
    全在UI线程之外发生,而callback发生在创建它的线程中,应用了Android的Handler发送消息机制。你也可以把AsyncHttpClient应用在
     
    Service中或者后台线程中,库代码会自动识别出它所运行的context。其特性包括:
     
    1. 发送异步http请求,在匿名callback对象中处理response;
     
    2. http请求发生在UI线程之外;
     
    3. 内部采用线程池来处理并发请求;
     
    4. GET/POST 参数构造,通过RequestParams类。
     
    5. 内置多部分文件上传,不需要第三方库支持;
     
    6. 流式Json上传,不需要额外的库;
     
    7. 能处理环行和相对重定向;
     
    8. 和你的app大小相比来说,库的size很小,所有的一切只有90kb;
     
    9. 自动智能的请求重试机制在各种各样的移动连接环境中;
     
    10. 自动的gzip响应解码;
     
    11. 内置多种形式的响应解析,有原生的字节流,string,json对象,甚至可以将response写到文件中;
     
    12. 永久的cookie保存,内部实现用的是Android的SharedPreferences;
     
    13. 通过BaseJsonHttpResponseHandler和各种json库集成;
     
    14. 支持SAX解析器;
     
    15. 支持各种语言和content编码,不仅仅是UTF-8。
     
    1. 创建一个AsyncHttpClient;
     
    2. (可选的)通过RequestParams对象设置请求参数;
     
    3. 调用AsyncHttpClient的某个get方法,传递你需要的(成功和失败时)callback接口实现,一般都是匿名内部类,实现了AsyncHttpResponseHandler,类库自己也提供了好些现成的response handler,你一般不需要自己创建一个。
     
    代码示例:
     1 import com.loopj.android.http.*;
     2 
     3 public class TwitterRestClient {
     4   private static final String BASE_URL = "http://api.twitter.com/1/";
     5 
     6   private static AsyncHttpClient client = new AsyncHttpClient();
     7 
     8   public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
     9       client.get(getAbsoluteUrl(url), params, responseHandler);
    10   }
    11 
    12   public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
    13       client.post(getAbsoluteUrl(url), params, responseHandler);
    14   }
    15 
    16   private static String getAbsoluteUrl(String relativeUrl) {
    17       return BASE_URL + relativeUrl;
    18   }
    19 }
     1 import org.json.*;
     2 import com.loopj.android.http.*;
     3 
     4 class TwitterRestClientUsage {
     5     public void getPublicTimeline() throws JSONException {
     6         TwitterRestClient.get("statuses/public_timeline.json", null, new JsonHttpResponseHandler() {
     7             @Override
     8             public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
     9                 // If the response is JSONObject instead of expected JSONArray
    10             }
    11             
    12             @Override
    13             public void onSuccess(int statusCode, Header[] headers, JSONArray timeline) {
    14                 // Pull out the first event on the public timeline
    15                 JSONObject firstEvent = timeline.get(0);
    16                 String tweetText = firstEvent.getString("text");
    17 
    18                 // Do something with the response
    19                 System.out.println(tweetText);
    20             }
    21         });
    22     }
    23 }
  • 相关阅读:
    iOS8 定位补充
    iOS系统导航/自绘制导航路线
    自定义大头针
    添加大头针
    iOS 地图
    iOS 定位
    UISearchBar
    NSPredicate谓词
    iOS的设备及分辨率、图片命名
    UIImageView、UISlider、UISwitch、UIStepper、UISegmentControl
  • 原文地址:https://www.cnblogs.com/chenlong-50954265/p/4496702.html
Copyright © 2011-2022 走看看