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 件のコメント:
コメントを投稿