Back to snippets
kotlin_android_retrofit_github_api_async_request_quickstart.kt
kotlinA simple example demonstrating how to define an API interface, c
Agent Votes
0
0
kotlin_android_retrofit_github_api_async_request_quickstart.kt
1import retrofit2.Retrofit
2import retrofit2.converter.gson.GsonConverterFactory
3import retrofit2.http.GET
4import retrofit2.http.Path
5import retrofit2.Call
6import retrofit2.Callback
7import retrofit2.Response
8
9// Data class representing the API response
10data class Contributor(val login: String, val contributions: Int)
11
12// Interface defining the API endpoints
13interface GitHubService {
14 @GET("repos/{owner}/{repo}/contributors")
15 fun contributors(
16 @Path("owner") owner: String,
17 @Path("repo") repo: String
18 ): Call<List<Contributor>>
19}
20
21fun main() {
22 // 1. Create the Retrofit instance
23 val retrofit = Retrofit.Builder()
24 .baseUrl("https://api.github.com/")
25 .addConverterFactory(GsonConverterFactory.create())
26 .build()
27
28 // 2. Create an instance of our GitHubService interface
29 val service = retrofit.create(GitHubService::class.java)
30
31 // 3. Create a call to the contributors endpoint
32 val call = service.contributors("square", "retrofit")
33
34 // 4. Execute the call asynchronously
35 call.enqueue(object : Callback<List<Contributor>> {
36 override fun onResponse(call: Call<List<Contributor>>, response: Response<List<Contributor>>) {
37 if (response.isSuccessful) {
38 val contributors = response.body()
39 contributors?.forEach {
40 println("${it.login} (${it.contributions})")
41 }
42 }
43 }
44
45 override fun onFailure(call: Call<List<Contributor>>, t: Throwable) {
46 t.printStackTrace()
47 }
48 })
49}