AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
Gradle (Module:app)
//Retrofit
implementation ("com.squareup.retrofit2:retrofit:2.9.0")
implementation ("com.squareup.retrofit2:converter-gson:2.9.0")
Crear un data class
UsuariosResponse.kt
package com.javi.u10a
data class Usuario(
val id: String,
val nombre: String,
val apellido1: String,
val apellido2: String,
val URL:String
)
Crear una clase interface
ApiService.kt
package com.javi.u10a
import retrofit2.http.GET
import retrofit2.http.Query
interface ApiService {
@GET("findByID.php")
suspend fun findByID(@Query("id") id: Int): List<Usuario>
}
En el MainActivity.kt
package com.javi.u10a
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.jakewharton.retrofit2.adapter.kotlin.coroutines.CoroutineCallAdapterFactory
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
class MainActivity : AppCompatActivity() {
private val apiService: ApiService by lazy {
val retrofit = Retrofit.Builder()
.baseUrl("https://javigomez.org/ESIC/PMDM/")
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(CoroutineCallAdapterFactory())
.build()
retrofit.create(ApiService::class.java)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
CoroutineScope(Dispatchers.IO).launch {
try {
val usuarios = apiService.findByID(1)
if (usuarios.isNotEmpty()) {
val usuario = usuarios[0]
Log.d("JAI", "Usuario: ${usuario.id}, ${usuario.nombre}, ${usuario.apellido1}, ${usuario.apellido2}")
}
} catch (e: Exception) {
Log.e("JAI", "Error al obtener usuarios", e)
}
}
}
}