Androidネットワークフレームワークandroid-async-http


転載は出典を明記してください:明桑Android
これはAndroidネットワークフレームワークシリーズの最後の1編です~~、本文は主にサードパーティのライブラリandroid-async-httpの使用を紹介し、その後Androidネットワークフレームワークシリーズの完結として、開発中にサードパーティフレームワークをどのように学習し、使用するかをまとめます!
1,Android Asynchronous Http Client概要
Android-async-httpは、UIスレッドとは異なる他のスレッドで実行されるHttpClientをカプセル化した最上位実装ですが、Handlerを使用してmessage処理を送信するコールバックロジックと同様に、サービススレッドまたはbackgroundスレッドで実行することもできます.
特徴:
  • 非同期HTTP要求、匿名コールバック応答関数
  • は、UIスレッドではなく他のスレッドでRequest
  • を送信する.
  • Requestsスレッドプール管理による同時リソースの制限
  • は、GET/POSTパラメータ
  • をカスタマイズすることができる
  • 複数種類のファイルアップロード方式
  • JSONデータのアップロード
  • Request再試行メカニズム
  • 複数のデータフォーマットを解析する
  • は、永続化ストレージCookie
  • をサポートする
  • SAX解析
  • をサポート
  • は、UTF-8
  • だけでなく、複数のコンテンツおよび言語符号化フォーマットをサポートする.
    詳細プロパティandroid-async-http
    2,Android-async-httpの使用
  • は、すべてのサードパーティ製ライブラリの使用と同様に、最新のダウンロードが可能なプロジェクトに追加する必要があります.jarパッケージ(android-async-http.jar)はgithubからcloneをローカル:android-async-httpに変更することもできます.
  • は直接ダウンロードするものであれば.JArパッケージ、プロジェクトlibsフォルダに追加し、jarパッケージを右クリックし、Add As Library:
  • を選択します.
  • cloneのプロジェクトであればjarパッケージにコンパイルし、手順1に従ってプロジェクトに追加する必要があります.以下はコンパイルプロセスです.まず、cloneのandroid-async-httpディレクトリの下に入り、コマンドラインで次のコマンド
  • を実行します.
    android update project -p ant jar

    2.android-async-httpの基本的な使い方:AsyncHttpClientインスタンスを作成し、Requestを開始する必要があります.
    AsyncHttpClietn client=new AsyncHttpClient();
        client.get("http://www.baidu.com",new AsyncHttpResponseHandler(){
            @Override
            public void onStart(){
                // Request     
            }
            @Override
            public void onSuccess(int statusCode,Header[] headers,byte[] response){
                //       ,statusCode=200,headers    http  ,response:     
            }
            @Override
            public void onFailure(int statusCode,Header[] heards,byte[] errorResponse,Throwable e){
                //        :statusCode=401\403\404\...
            }
            @Override
            public void onRetry(int retryNo){
                //       
    
            }
    
        });

    推奨方法:static Http Clientを作成します.
    Volleyフレームワークと同様に、クラスを個別に作成し、グローバルに特定のオブジェクトを持つために必要なコードを初期化する必要があります.ここでは、static Clientクラスに必要なものをカプセル化し、独自のニーズに応じてカスタムClientクラスを具体的に作成できます.具体的には、API:AsyncHttpClient,RequestParams and AsyncHttpResponseHandlerを参照してください.
    public class MyCLient{
            private static final String BASE_URL="http://www.baidu.com";
    
            //    static client
            private static AsyncHttpClient client=new AsyncHttpClient();
    
            //        get,post   
    
            public static get(String url,RequestParams params,AsyncHttpResonseHandler responseHand){
                client.get(url,params,respnseHand)
            }
            public static post(String url,RequestParams params,aAsyncHttpResponseHandler responseHand){
                client.post(url,params,responseHand);
            }
    
        }
    
        //            ,
        MyClient.get(url,params,new AsyncHttpResonseHandler(){...});

    3.Cookieのストレージ:PersistentCookieStoreを使用することで、HttpClientのCookieStoreインタフェースを実現し、CookieをローカルSharedPerferencesに自動的に格納し、ユーザー登録情報などを格納することが多い.
    AsyncHttpClient client=new AsyncHttpClient();
    
        PersistentCookieStore cookieStore=new PersistentCookieStore(context);
        client.setCookieStore(cookieStore);
    
        //         Cookie       ,   Cookie  ,    addCookie()  
    
        BasicClientCookie myCookie=new BasicClientCOokie("cookieuser","hh");
        myCookie.setViersion(1);
        myCookie.setDomain("www.my.com");
        myCookie.setPath("/");
        client.addCookie(myCookie);

    4.RequestにGET/POSTパラメータを追加する:RequestParamsクラスを使用する必要があります.作成方法は以下のとおりです.
    RequestParams params=new RequestParams("username","coder");
        //  
        RequestParams params=new RequestParams();
        params.put("username","coder");
        //        Map    
        HashMap<String,String> map=new HashMap<String,String>();
        map.put("username","coder");
        RequestParams params=new RequestParams(map);
    
        ....
        //        get(),post()   ,RequestParams           
        client.get(url,params,new AsyncHttpResponseHandler(){..});

    5.RequestParamsでファイルをアップロード:RequestParamsを試してみる方法がわかりました.では、どのようにしてファイルをアップロードすることができますか.以下の3つの方法があります.
    入力ストリームからアップロード:
        InputStream myInputStream = blah;
        RequestParams params = new RequestParams();
        params.put("secret_passwords", myInputStream, 

    “passwords.txt”);
    ファイルオブジェクトからアップロード:
        File myFile = new File("/path/to/file.png");
        RequestParams params = new RequestParams();
        try {
            params.put("profile_picture", myFile);
        } catch(FileNotFoundException e) {}

    バイト配列によるアップロード:
        byte[] myByteArray = blah;
        RequestParams params = new RequestParams();
        params.put("soundtrack", new ByteArrayInputStream(myByteArray), "she-wolf.mp3");

    6.バイナリファイルのダウンロード:FileAsyncHttpResponseHandlerクラスで画像などのバイナリファイルをダウンロードできる
        AsyncHttpClient client=new AsyncHttpClient();
        client.get("www.my.com/movies.jpg",new FileAsyncHttpResponseHandler(){
            @Override
            public void Success(int statusCode,Header[] headers,File response){
                //    
            }
        })

    では、Jsonリクエストのような他のタイプをどのように送信するかを観察すると、new JsonHttpResponseHandler(){....}だけが必要であることがわかります.
    7.HTTP認証Request:webserviceでは常に認証が必要であり、以下の2つの方法で実現できる.
        AsyncHttpClient client=new AsyncHttpClient();
        //
        client.setBasicAuth("username","password/token");
        client.get("http://www.my.com");
    
        //             
        client.setBasicAuth("username","password",new AuthScope("www.my.com",80,AuthScope.ANY_REALM));
        client.get("http://www.my.com");

    以上、android-async-httpフレームワークの基本的な使い方ですが、具体的なDemoは書かれていません.詳細は公式サイトで提供されているAPI:android-sync-http APIを参照してください.
    まとめ:
    Androidネットワークフレームワークの学習は一段落し、主にVolley、Picasso、android-sync-httpの3つのフレームワークの使用を紹介し、Androidネットワークプログラミングを勉強している学生に役立つことを望んでいます.
    使用の中で、私达は自分の需要と各フレームワークの特徴によって自分の必要なフレームワークを选ぶ必要があります.初期に私达は基本的な使用を掌握すればいいです.多くの时、私达はそれらのソースコードを研究してみるべきで、このようにして后の开発の中で自由に使うことができます.
    実はいくつかの文章の下で、開発の中で第三者の枠組みを使うのは基本的に以下のステップにほかならないことを発見することができます.
  • 自分のニーズに応じてgithubなどのサイトに行って、現在流行しているフレームワークを求めます.
  • 選択したフレームワークの特徴と使用シーン、欠陥を熟知しています.
  • は、対応するjarパケットをプロジェクトに導入する.
  • 公式例に基づいて基本的な使い方を把握する.
  • 練習を多くして、シーンを熟知しています.
  • ソースコードを研究し、自分のニーズに適応するためにフレームワークを書き換えます.

  • 次に実戦の文章を書くつもりで、以上のフレームワークを柔軟に運用して、私たちは簡単なアプリを実現して、興味のある関心の微博あるいは公衆番号、いつでも更新します~~
    参考資料:
    Android Asynchronous Http Client
  • マイクロブログ:@明桑Android黒歴史
  • メールボックス:<[email protected]>
  • 個人ホームページ:明桑がAndroid汪に勝った黒歴史
  • 微信公衆番号:ITBird Android 网络框架 android-async-http_第1张图片