ネットワークに接続してJsonデータを取得する2017年01月03日(編集2017年01月03日)TweetAndroidアプリでネットワークに接続してREST形式のAPIを利用する場合、Retrofitを使うと便利です。この記事は、Retrofitでネットワークに接続してJsonデータを取得する方法を記載した記事です。APIをJavaインターフェースに変更することができます。他にもGsonを使ったPOJO変換、RxAndroidを利用した非同期処理、OkHttpの連携にも対応しています。Google純正のライブラリではありませんが、2017年1月現在では、AndroidアプリでAPI処理を実装する場合、VolleyよりもRetrofitを利用することをオススメします。インストールRetrofitをインストールするには、app/build.gradleに次のように記述します。rootProject.retrofitVersion}Retrofitのバージョンはbuild.gradleに次のように記述します。"2.1.0"}ビルド後に、Retrofitの実装が可能になります。インターフェース実装まず、APIをJavaインターフェースに実装します。LWWS)を利用します。HTTPメソッドRESTで利用するHTTPメソッドは、アノテーションで指定します。@GET("v1")HTTPメソッドのGETを@GETアノテーションで指定します。HTTPメソッドのGETはリソースを取得します。@GETアノテーションの引数には、URIのパスを記述します。Retrofitでネットワークに接続する時は、URIのbaseUrlとパスを組み合わせたURLが利用されます。現在のRetrofitは、URIのパスは省略できません。アプリのURIの設計は、RESTの仕様を適用した設計にしてください。パラメーターメソッドの引数でパラメーターを設定します。LWWS)のサンプルURLです。city);とします。アノテーションにretrofit2.http.Queryを指定します。引数の数を増やすことで多くのクエリに対応できます。ネットワーク実装Activityにネットワーク接続処理を実装します。jsonデータをPOJOに変換するconverter-gsonをインストールします。converter-gsonをインストールするには、app/build.gradleに次のように記述します。rootProject.retrofitVersion}インストール後にネットワーク処理を実装します。このサンプルでは、RxAndroidやAsyncTaskLoaderはコードが複雑になるので使いません。非同期処理は通常のスレッドで記述します。本番リリースの実装をする場合は、RxAndroidを使うのをお勧めします。RetrofitオブジェクトBuilderパターンでRetrofitオブジェクトを作成します。JavaのBuilderパターンです。GsonでPOJOに変換するConverterを設定します。.addConverterFactory(GsonConverterFactory.create())この実装をしないとConvertエラーが発生します。Response取得ネットワークから取得したResponseは以下のように取得します。call.execute().body();executeメソッドでResponseオブジェクトを取得し、bodyでデータを取得します。エラーハンドリングをする場合は、Responseオブジェクトを使用します。Javaの力に自信がある場合は、CallAdapter.Factoryを継承したErrorAdapterクラスを作成してもいいでしょう。CallAdapter.Factoryを継承したクラスはわかりにくいので、プロジェクトのエンジニア達の力量を考慮して実装しましょう。GsonResponseをコンバートするGsonオブジェクトは、通常のGsonと同じです。copyright;}ビルド上記のコードの動作を確認してみましょう。appAPIを取得して、pinpointLocationsの数が表示されました。結論Retrofitは柔軟なライブラリで、GsonやRxAndroidとも連携可能です。単体でも利用できます。Javaの力が高ければ高いほどより洗練された使い方のできるライブラリなので、ぜひ積極的に利用してください。