LoginSignup
16
16

More than 5 years have passed since last update.

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);
16
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
16