2017年3月20日月曜日

Retrofit2を使ってみた時のメモ

Retrofit2を使ってみた時のメモ
githubのリポジトリのidとnamaをログで出すまで


導入方法


app/build.gradle

    compile 'com.squareup.retrofit2:retrofit:2.2.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'

を追加
(gsonはjsonを扱うためのライブラリ)


AndroidManifest.xml


を追加
インターネットを使えるようにパーミッション設定


データクラスの定義


Repo.java

public class Repo{
        @Expose
        public Long id;
        @Expose
        public String name;

        public String toString(){
            return "id : " + id + " , name : " + name;
        }
    }

今回はidとnameだけ


インターフェースの定義


GitHubService.java

    public interface GitHubService {
        @GET("users/{user}/repos")
        Call<List<Repo>> listRepos(@Path("user") String user);
    }

Retrofitの設定


MainActivity.java

Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://api.github.com/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
GitHubService service = retrofit.create(GitHubService.class);

> Unable to create converter...
のような風に言われてしまったので
> .addConverterFactory(GsonConverterFactory.create())
を追加しています。


リクエストをインスタンス化


MainActivity.java

Call<List<Repo>> call = service.listRepos("ユーザ名");

callを実行


call.enqueue(new Callback<List<Repo>>() {
            @Override
            public void onResponse(Call<List<Repo>> call, Response<List<Repo>> response) {
                Log.d("call","onResponse");
                List<Repo> repos = response.body();
                for (Repo repo:repos) {
                    Log.d("repo",repo.toString());
                }
            }

            @Override
            public void onFailure(Call<List<Repo>> call, Throwable t) {
                Log.d("call","onFailure");
            }
        });

そしたらログに出てきました。


最後に

とりあえず表示だけできたのでメモしました。
gsonについてもRetrofitについても
まだ、わからないことだらけなので少しずつ検証していきます。


参考

0 件のコメント:

コメントを投稿