Kotlin

Uso de Kotlin para obtener datos desde la API de indicadores.

A continuación se muestra el código de ejemplo para consultar a nuestra API desde el Lenguaje Kotlin. El ejemplo está pensado para Kotlin/JVM, por lo que funciona en Android, backend o aplicaciones de escritorio. Utiliza OkHttp y kotlinx.serialization, y envía la cabecera User-Agent para identificar el cliente.

Agrega las dependencias y el plugin de serialización a tu proyecto:

plugins {
    kotlin("jvm") version "2.4.21"
    kotlin("plugin.serialization") version "2.4.21"
}

dependencies {
    implementation("com.squareup.okhttp3:okhttp:4.12.0")
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")
}
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import okhttp3.OkHttpClient
import okhttp3.Request
import java.util.concurrent.TimeUnit

@Serializable
data class Indicador(
    val fecha: String,
    val valor: Double,
)

@Serializable
data class Resumen(
    val uf: Indicador,
)

fun main() {
    val client = OkHttpClient.Builder()
        .connectTimeout(10, TimeUnit.SECONDS)
        .readTimeout(10, TimeUnit.SECONDS)
        .build()

    val request = Request.Builder()
        .url("https://findic.cl/api/")
        .header("User-Agent", "findic-docs-kotlin/1.0")
        .header("Accept", "application/json")
        .get()
        .build()

    try {
        client.newCall(request).execute().use { response ->
            if (!response.isSuccessful) {
                error("Error en la solicitud: ${response.code}")
            }

            val body = response.body?.string() ?: error("Respuesta vacía")
            val json = Json { ignoreUnknownKeys = true }
            val resumen = json.decodeFromString<Resumen>(body)

            println("Fecha: ${resumen.uf.fecha}")
            println("Valor UF: $ ${resumen.uf.valor}")
        }
    } catch (exception: Exception) {
        println("Error en la solicitud: ${exception.message}")
    }
}

En Android, recuerda agregar <uses-permission android:name="android.permission.INTERNET" /> en el AndroidManifest.xml.

Más información del objeto JSON entregado en el resumen aquí.