Cliente HTTP em Kotlin: fazendo requisições corretamente

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução aos clientes HTTP em Kotlin



O desenvolvimento moderno em Kotlin é impensável sem interação com APIs remotas e serviços web. Um cliente HTTP é uma ferramenta fundamental que permite que sua aplicação envie requisições e receba respostas da internet. Independentemente de você estar criando um aplicativo móvel, um backend de servidor ou um aplicativo desktop, saber trabalhar corretamente com requisições HTTP é uma habilidade obrigatória para todo desenvolvedor Kotlin.



Neste artigo, vamos detalhar quais bibliotecas para trabalhar com HTTP estão disponíveis no ecossistema Kotlin, como fazer requisições GET e POST, processar JSON e gerenciar assincronia. Você aprenderá como evitar erros típicos e tornar seu código confiável e eficiente.



Principais bibliotecas para clientes HTTP em Kotlin



1. Ktor Client



Ktor é um framework assíncrono moderno, criado pela empresa JetBrains especialmente para Kotlin. O Ktor Client suporta corrotinas, multiplataforma (JVM, Android, iOS, JS, Native) e oferece um motor flexível e configurável.



Exemplo de uma requisição GET básica com Ktor:



import io.ktor.client.*import io.ktor.client.request.*import io.ktor.client.statement.*

suspend fun fetchData(): String { val client = HttpClient() val response: HttpResponse = client.get("https://api.example.com/data") client.close() return response.bodyAsText()}


2. OkHttp



OkHttp é uma das bibliotecas mais populares para Java e Android, que funciona perfeitamente também com Kotlin. Ela se destaca pelo alto desempenho, suporte a HTTP/2, pool automático de conexões e interceptadores (interceptors).



Exemplo de uma requisição GET síncrona com OkHttp:



import okhttp3.OkHttpClientimport okhttp3.Request

fun fetchData(): String { val client = OkHttpClient() val request = Request.Builder() .url("https://api.example.com/data") .build() client.newCall(request).execute().use { response -> return response.body?.string() ?: "" }}


3. Fuel



Fuel é uma biblioteca leve e intuitiva para Kotlin, construída sobre o OkHttp. Ela oferece um estilo funcional para trabalhar com requisições e um tratamento conveniente de resultados.



Exemplo de uma requisição GET com Fuel:



import com.github.kittinunf.fuel.httpGetimport com.github.kittinunf.result.Result

fun fetchData() { "https://api.example.com/data" .httpGet() .responseString { _, _, result -> when (result) { is Result.Success -> println(result.value) is Result.Failure -> println(result.error) } }}


Como enviar corretamente requisições GET e POST



Requisições GET



Requisições GET são usadas para obter dados do servidor. Os parâmetros da requisição geralmente são passados na URL. Ao usar Ktor, os parâmetros podem ser adicionados através do bloco parameter:



val client = HttpClient()val response = client.get("https://api.example.com/search") {    parameter("query", "Kotlin")    parameter("page", 1)}


É importante lembrar: requisições GET não devem alterar o estado do servidor e não devem conter corpo da requisição. Todos os dados são transmitidos através da URL ou cabeçalhos.



Requisições POST



Requisições POST são destinadas a enviar dados para o servidor (por exemplo, criar um novo recurso). O corpo da requisição pode estar no formato JSON, Form URL Encoded ou Multipart.



Exemplo de uma requisição POST com corpo JSON usando Ktor:



import io.ktor.client.request.*import io.ktor.http.*

data class User(val name: String, val email: String)

suspend fun createUser(user: User): String { val client = HttpClient() val response = client.post("https://api.example.com/users") { contentTyp

Blogs

Book Recommendations