V predošlej lekcii sme videli, ako parsovať odpoveď pomocou body<T>(). Pozrime sa na to podrobnejšie:
import io.ktor.client.*
import io.ktor.client.call.*
import io.ktor.client.engine.cio.*
import io.ktor.client.plugins.contentnegotiation.*
import io.ktor.client.request.*
import io.ktor.serialization.kotlinx.json.*
import kotlinx.serialization.Serializable
import kotlinx.coroutines.runBlocking
@Serializable
data class Todo(val userId: Int, val id: Int, val title: String, val completed: Boolean)
fun main() = runBlocking {
val client = HttpClient(CIO) {
install(ContentNegotiation) { json() }
}
// Parsovanie jedneho objektu
val todo = client.get("https://jsonplaceholder.typicode.com/todos/1")
.body<Todo>()
println("${todo.title} - ${todo.completed}")
// Parsovanie zoznamu objektov
val todos = client.get("https://jsonplaceholder.typicode.com/todos")
.body<List<Todo>>()
println("Pocet todo: ${todos.size}")
// Parsovanie do JSON stringu
val jsonString = client.get("https://jsonplaceholder.typicode.com/todos/1")
.body<String>()
println(jsonString)
client.close()
}
val response = client.get("https://jsonplaceholder.typicode.com/todos/1")
println(response.status) // 200 OK
println(response.headers["Content-Type"]) // application/json; charset=utf-8
// Query parametre
val response = client.get("https://jsonplaceholder.typicode.com/todos") {
parameter("userId", 1)
parameter("completed", false)
}
// Path parametre
val userId = 1
val response = client.get("https://jsonplaceholder.typicode.com/users/$userId")
Vždy skontroluj odpoveď pomocou
response.statuspred parsovaním.
Načítaj jeden objekt z API pomocou body<T>() a vypíš jeho názov.
Načítaj zoznam objektov, vypíš jeho veľkosť a prvé tri prvky.
Pridaj do GET požiadavky query parameter a pred parsovaním over stav odpovede.