【Android】Retrofitについて
Retrofitとは
Retrofitとは、Http通信をする際に使われるライブラリ。
webApiを叩くとかで、けっこう使うのでは
今回は、構成とかは考えず、とりあえず最低限の動くという状態でやってます。
叩くAPIは、QiitaのWebApiです。
目次
- build.gradleとManifestへの記述
- Interfaceの作成
- レスポンスのmodel作成
- 実行
1. build.gradleとManifestへの記述
- 依存関係の記述
build.gradle
// retrofit
implementation "com.squareup.retrofit2:retrofit:2.5.0"
// 以下は、gsonというjsonをjavaで扱えるように変換してくれるライブラリ
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
- Manifestへの記述
- 通信を許可するパーミッションを記述
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
2. Interfaceの作成
ApiService.kt
interface ApiService {
// 記事をとってくるメソッドです。
@GET("/api/v2/items") // => GETのリクエスト
fun getArticle(): Call<List<Article>>
}
3. レスポンスのmodel作成
- 先ほど、Interfaceで定義したリクエストに対するレスポンスに対応するmodelクラスを作成します。
Article.kt
data class Article (
val id: String,
val title: String,
val user: User
)
data class User (
val id: String,
)
4. 実行
- 実行は、Activityで実行してます。
MainActivity.kt
class MainActivity : AppCompatActivity() {
val TAG = "MainActivity"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding: ActivityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
val retrofit = Retrofit.Builder()
.baseUrl("https://qiita.com")
.addConverterFactory(GsonConverterFactory.create()) // ここで、jsonをjavaで扱えるようにするGsonを使ってます。
.build()
// サービスを実行するクライアントの作成
val articleClient = retrofit.create(ApiService::class.java)
// 通信は非同期でやらないといけないので、今回はThreadで実行
Thread().run {
// とりあえず、レスポンスは返ってきます。あとは煮るなり焼くなり
articleClient.getArticle()
}
}