Android/kotlin/Retrofit2
提供: 初心者エンジニアの簡易メモ
Retrofitとは
APIやり取りのライブラリ
サンプル
app/build.gradle
dependencies{
def retrofitVer='2.9.0'
implementation"com.squareup.retrofit2:retrofit:$retrofitVer"
implementation"com.squareup.retrofit2:converter-gson:$retrofitVer"
}
app/src/main/AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
GitHubClient.kt
package com.example.retrofit2application
import retrofit2.Call
import retrofit2.http.GET
import retrofit2.http.Headers
import retrofit2.http.Path
interface GitHubClient {
@Headers(
"Accept: application/vnd.github.v3.full+json",
"User-Agent: Retrofit2Agent"
)
@GET("/users/{username}")
fun getUser(@Path("username") username: String) : Call<User>
}
User.kt
package com.example.retrofit2application
data class User(
val login: String,
val id: Int,
val avatar_url: String,
val gravatar_id: String,
val url: String,
val html_url: String,
val followers_url: String,
val following_url: String,
val gists_url: String,
val starred_url: String,
val subscriptions_url: String,
val organizations_url: String,
val repos_url: String,
val events_url: String,
val received_events_url: String,
val type: String,
val site_admin: Boolean,
val name: String,
val company: String?,
val blog: String?,
val location: String?,
val email: String?,
val hireable: Boolean?,
val bio: String?,
val public_repos: Int,
val public_gists: Int,
val followers: Int,
val following: Int,
val created_at: String,
val updated_at: String
)
package com.example.retrofit2application
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
class MainActivity : AppCompatActivity() {
val tag = "MainActivity"
val retrofit = Retrofit.Builder()
.baseUrl("https://api.github.com")
.addConverterFactory(GsonConverterFactory.create())
.build()
var service = retrofit.create(GitHubClient::class.java)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
service.getUser("googleads")
.enqueue(object : Callback<User> {
override fun onResponse(call: Call<User>, response: Response<User>) {
if (response.isSuccessful) {
val user: User? = response.body()
if (user != null) {
Log.d(tag, "login=" + user.login)
Log.d(tag, "type=" + user.type)
Log.d(tag, "name=" + user.name)
}
}
}
override fun onFailure(call: Call<User>, t: Throwable) {
}
})
}
}
出力ログ
login=googleads type=Organization name=Google Ads
参考
https://wiki.toridge.com/index.php?android-kotlin-retrofit2
