[Android] 006. HTTP通信(Retrofit2)

Retrofit2のkotlinでの使い方は以下で概ね理解できると思います
https://developer.android.com/codelabs/basic-android-kotlin-compose-getting-data-internet?hl=ja#0

Retrofit2を使用するため以下の依存関係の追加

com.squareup.retrofit2:retrofit
com.squareup.retrofit2:converter-scalars

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">10.0.2.2</domain>
    </domain-config>
</network-security-config>
<uses-permission android:name="android.permission.INTERNET" />

<application
    android:networkSecurityConfig="@xml/network_security_config"
const val BASE_URL = "http://10.0.2.2:4010"
interface ApiService {
    @GET("test")
    suspend fun getTest(@Query("id") id: Int): String
}
val retrofit = Retrofit
    .Builder()
    .addConverterFactory(ScalarsConverterFactory.create())
    .baseUrl(BASE_URL)
    .build()
object TestApi {
    val retrofitService : ApiService by lazy {
        retrofit.create(ApiService::class.java)
    }
}

@Composable
fun Screen(modifier: Modifier = Modifier) {
    val scope = rememberCoroutineScope()
    Column(modifier) {
        Button(
            onClick = {
                scope.launch(Dispatchers.IO) {
                    val response = TestApi.retrofitService.getTest(1)
                    Log.d("TestApi", response.toString())
                }
            }
        ) {
            Text("GET")
        }
    }
}

Android Studio Koala 2024.1.1 Patch 1 built on July 11, 2024