Android Volley による通信処理
Android Volley は、Android用の 通信ライブラリです。
Android の通信処理の Request / Response をとても簡単に実装することが可能です。
Volley でキーとなる Class を簡単に紹介します。
ソースコードは、Google Git Volleyにて参照することが可能です。
Volley.class
BasicNetwork, HurlStack, RequestQueue を作成する処理をまとめられている
newRequestQueue
RequestQueue を作成する
public static RequestQueue newRequestQueue(Context context, HttpStack stack)
- Context context : キャッシュディレクトリ作成の為に利用する
- HttpStack stack : HttpStack の独自実装が必要な時は指定する、Null でも可
RequestQueue.class
Request<T> の要求をスレッドプールし順次 BaseNetwork へ登録する処理などがまとめられている。
いわゆる、 Request の管理クラス?のようなもの。
add
Request<T> を、Queueに追加する。
追加されたRequestは内部で適切にリクエスト送信される
public <T> Request<T> add(Request<T> request)
- Request<T> request : サービスへのリクエストを指定する
Request<T>.class
ネットワークのリクエストの基本情報を格納している。
- <T> : レスポンスをどのような形にパースするのかを決める値(ジェネリクス)
Method
HTTP Request Method の列挙
/**
* Supported request methods.
*/
public interface Method {
int DEPRECATED_GET_OR_POST = -1;
int GET = 0;
int POST = 1;
int PUT = 2;
int DELETE = 3;
int HEAD = 4;
int OPTIONS = 5;
int TRACE = 6;
int PATCH = 7;
}
Request (コンストラクタ)
リクエスト情報を基本的な形で作成する
public Request(int method, String url, Response.ErrorListener listener)
- int method : HTTP Request Method を指定する
- String url : HTTP Request URL を指定する
- Response.ErrorListener listener : Error の時に呼ばれるハンドラー
Response<T>.class
ネットワークのレスポンスの基本的な内容を格納している。
- <T> : レスポンスをどのような形にパースするのかを決める値
Response<T>.Listener<T>.interface
レスポンスの値をパースした結果を返す為のコールバックインターフェイス
- <T> : レスポンスをどのような形にパースするのかを決める値
onResponse
レスポンスが正常に終了した時に呼ばれる
public void onResponse(T response)
- T response : レスポンスのコンテンツデーターを<T>でパースした値が入ってくる
Response<T>.ErrorListener.interface
レスポンス処理が失敗した時に結果を返す為のコールバックインターフェース
- <T> : レスポンスをどのような形にパースするのかを決める値
onErrorResponse
レスポンスが不正終了した時に呼ばれる
public void onErrorResponse(VolleyError error)
- VolleyError error : Volley がエラーハンドリングしてくれたエラー値が入ってくる
使用例
Response.Listener<String> stringListener = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// レスポンスが正常に処理された場合のコンテンツ情報が文字列で取得できる
}
};
Response.ErrorListener errorListener = new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// レスポンスがエラーだった場合のエラー情報が取得できる
}
};
StringRequest stringRequest = new StringRequest(Request.Method.GET, "https://www.google.co.jp/", stringListener, errorListener);
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);