android-async-httpライブラリの使用

2872 ワード

紹介する
androidでインターネットにアクセスする第三者ライブラリgithubアドレス:https://github.com/loopj/android-async-http android-async-httpホームページ:http://loopj.com/android-async-http/
特性
  • は、非同期http要求を送信し、匿名のcalbackオブジェクトにおいて、レスポンス情報を処理する。
  • http要求は、UI(主)スレッド以外の非同期スレッドで発生する。
  • 内部では、スレッド池を用いて、同時要求を処理する。
  • は、Request Paraamsクラスを通じてGET/POSTを構成する。
  • は、複数のファイルを内蔵してアップロードし、第三者ライブラリのサポートが必要ではない。
  • フロー式Jsonアップロードは、追加のライブラリが必要ではありません。
  • は、ループおよび相対リダイレクトを処理することができる。
  • はあなたのappサイズと比べて、倉庫のsizeはとても小さいです。全部は90 kbだけです。
  • は、様々な移動接続環境において、自動知能要求リトライ機構を備えている。
  • 自動gzip応答デコード。
  • は、複数の形式の応答解析を内蔵し、元のバイトストリーム、string、jsonオブジェクト、さらには、レスポンスをファイルに書き込むことができます。
  • 永久のクッキーを保存し、内部実装にはAndroidのSharedPreferencesを使用します。
  • BaseJson HttpResonseHandlerと各種jsonライブラリを通じて集積する。
  • はSAX解像器をサポートします。
  • は、UTF-8だけではなく、様々な言語とcontent符号化をサポートする。
  • Gradeで引用
    appのbuid.gradleにcompile 'com.loopj.android:android-async-http:1.4.9'を追加します。
    使用
    公式提案は、静的な方法でtwitterを使用する例
     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; }}

    です。
    clientの端でこのように使うことができます。
    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);         
       }       
     });   
     }
    
    参照:
    RequestParams params = new RequestParams();
    params.put("key", "value");
    params.put("more", "data");