Volleyの一次使用(Http要求データ)
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オブジェクトを取得する必要があります.次のメソッドを呼び出して取得できます.
ネットワークインタラクションが必要なActivityでRequestQueueオブジェクトを作成すれば十分です.
次に、HTTPリクエストを発行するには、次のようにStringRequestオブジェクトを作成する必要があります.
トランザクションは正常なコールバックに応答し、3番目のパラメータはサーバが失敗したコールバックに応答します.
リクエストが成功したらonResponesで処理し、リクエストが失敗したらonErrorResponseで処理します.
最後にこのStringRequestオブジェクトをRequestQueueに追加すると、以下のようになります.
1.RequestQueueオブジェクトを作成します.
2.StringRequestオブジェクトを作成します.
3.StringRequestオブジェクトをRequestQueueに追加します.
HttpのGetリクエストを使用していますが、Postリクエストを送信する場合は、StringRequestオブジェクトを作成する際に次の方法を使用する必要があります.
getParams()メソッドでPOSTパラメータを取得すると、解決策は当然あります.StringRequestの匿名クラスでgetParams()メソッドを書き換えるだけで、ここでPOSTパラメータを設定すればいいです.コードは以下のようになります.
2.JsonRequestの使い方
JsonRequestもRequestクラスから継承されていますが、JsonRequestは抽象クラスであるため、そのサブクラスJsonArrayRequestまたはJsonObjectRequestのオブジェクトを作成することで操作します.
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オブジェクトから取得したいデータの一部を取り出すだけでよい.