Volleyの一次使用(Http要求データ)

4260 ワード

VolleyはAsyncHttpClientとUniversal-Image-Loaderの長所を一身に集めたと言っていますが、
AsyncHttpClientのようにHTTP通信を非常に簡単に行うこともできるし、Universal-Image-Loaderのように
同じようにネットワーク上の画像を簡単にロードします.簡単で使いやすいほか、Volleyは性能面でも大幅な調整を行い、
その設計目標は、データ量が少ないが、通信が頻繁なネットワーク操作に適しており、ビッグデータ量の
ネットワーク操作、例えばファイルのダウンロードなど、Volleyはあまり適用されません.
まずはVolleyのjarパッケージをダウンロード
Git clone:Urlのアドレスは次のとおりです.https://android.googlesource.com/platform/frameworks/volley 
ダウンロード後にeclipseにインポートし、対応するjarパッケージをエクスポートします.
アドレスのjarパッケージを直接ダウンロードするか
その後、このjarパッケージをAndroidプロジェクトのlibsフォルダに入れ、準備が完了しました.次に、具体的なコード実装を行います.
適切なネットワーク権限の構成: 
1.StringRequestの使い方
Volleyの使い方は非常に簡単なので、基本的なHTTP通信から学びましょう.つまり、HTTPリクエストを開始し、HTTP応答を受信します.
まずRequestQueueオブジェクトを取得する必要があります.次のメソッドを呼び出して取得できます.
RequestQueue mQueue = Volley.newRequestQueue(context);
ここで入手したRequestQueueは、すべてのhttpをキャッシュし、毎回Requestリクエストオブジェクトを作成する必要がなく、同時に送信できるリクエストキューオブジェクトです.
ネットワークインタラクションが必要なActivityでRequestQueueオブジェクトを作成すれば十分です.
次に、HTTPリクエストを発行するには、次のようにStringRequestオブジェクトを作成する必要があります.
StringRequest stringRequest = new StringRequest("http://www.sina.com",  
                        new Response.Listener<String>() {  
                            @Override  
                            public void onResponse(String response) {  
                                Log.d("TAG", response);  
                            }  
                        }, new Response.ErrorListener() {  
                            @Override  
                            public void onErrorResponse(VolleyError error) {  
                                Log.e("TAG", error.getMessage(), error);  
                            }  
                        });  
ここでnewはStringRequestオブジェクトを出し、StringRequestの構造関数は3つのパラメータを入力する必要があります.最初のパラメータはターゲットサーバのURLアドレスで、2番目のパラメータは服です.
トランザクションは正常なコールバックに応答し、3番目のパラメータはサーバが失敗したコールバックに応答します.
リクエストが成功したらonResponesで処理し、リクエストが失敗したらonErrorResponseで処理します.
最後にこのStringRequestオブジェクトをRequestQueueに追加すると、以下のようになります.
mQueue.add(stringRequest);
実は3つのステップです.
1.RequestQueueオブジェクトを作成します.
2.StringRequestオブジェクトを作成します.
3.StringRequestオブジェクトをRequestQueueに追加します.
HttpのGetリクエストを使用していますが、Postリクエストを送信する場合は、StringRequestオブジェクトを作成する際に次の方法を使用する必要があります.
StringRequest stringRequest = new StringRequest(Method.POST, url,  listener, errorListener); 
StringRequestではPOSTパラメータを設定する方法は提供されていませんが、POSTリクエストが発行されると、VolleyはStringRequestの親であるRequestの
getParams()メソッドでPOSTパラメータを取得すると、解決策は当然あります.StringRequestの匿名クラスでgetParams()メソッドを書き換えるだけで、ここでPOSTパラメータを設定すればいいです.コードは以下のようになります.
StringRequest stringRequest = new StringRequest(Method.POST, url,  listener, errorListener) {  
    @Override  
    protected Map<String, String> getParams() throws AuthFailureError {  
        Map<String, String> map = new HashMap<String, String>();  
        map.put("params1", "value1");  
        map.put("params2", "value2");  
        return map;  
    }  
};  
Volleyはオープンソースなので、私たちは自分の方法をVolleyに追加して、自分の機能を実現することができます.
2.JsonRequestの使い方
JsonRequestもRequestクラスから継承されていますが、JsonRequestは抽象クラスであるため、そのサブクラスJsonArrayRequestまたはJsonObjectRequestのオブジェクトを作成することで操作します.
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("http://m.juhe.com.cn", null,  
        new Response.Listener<JSONObject>() {  
            @Override  
            public void onResponse(JSONObject response) {  
                Log.d("TAG", response.toString());  
            }  
        }, new Response.ErrorListener() {  
            @Override  
            public void onErrorResponse(VolleyError error) {  
                Log.e("TAG", error.getMessage(), error);  
            }  
        });
最後にこのJsonObjectRequestオブジェクトをRequestQueueに追加すると、次のようになります.
mQueue.add(jsonObjectRequest);
サーバから返されたデータフォーマットはJson形式であり、onResponse()メソッドに搭載されているパラメータもJSOnObjectオブジェクトであり、その後JSOnObjectオブジェクトから取得したいデータの一部を取り出すだけでよい.