O que é OkHttp e para que serve?
\n\nOkHttp é uma biblioteca HTTP poderosa e eficiente para JVM (Java Virtual Machine), Android e Kotlin/Native, desenvolvida pela empresa Square. Ela fornece uma API conveniente para realizar requisições HTTP e processar respostas. OkHttp é o padrão de facto para trabalhar com rede no ecossistema Android e é ativamente utilizado em aplicações Kotlin no lado do servidor.
\n\nPor que usar OkHttp em vez das ferramentas padrão do Java (HttpURLConnection)?
\n- \n
- Simplicidade e praticidade: Uma API limpa e fluente (fluent), fácil de ler e escrever. \n
- Desempenho: Suporte nativo a HTTP/2, compressão automática de respostas (gzip), pool de conexões (connection pooling) e cache. \n
- Confiabilidade: Reenvio automático de requisições em caso de falhas de rede, resiliência a erros de DNS e TLS. \n
- Flexibilidade: Interceptadores (interceptors) facilmente configuráveis para logging, autenticação, modificação de requisições e respostas. \n
- Testabilidade: Possibilidade de substituir a camada de rede usando MockWebServer. \n
OkHttp é ideal para aplicações Android, clientes de API REST, microsserviços e qualquer outro projeto em Kotlin que exija uma comunicação HTTP rápida e confiável.
\n\nInstalação
\n\nOkHttp é distribuído através do Maven Central. Para adicioná-lo ao projeto, utilize o sistema de build Gradle (o mais comum para Kotlin).
\n\nPara projeto Android / Kotlin/JVM (build.gradle.kts):
\ndependencies {\n implementation("com.squareup.okhttp3:okhttp:4.12.0")\n // Para logging (opcional)\n implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")\n}\n\nPara projeto Android / Kotlin/JVM (build.gradle):
\ndependencies {\n implementation 'com.squareup.okhttp3:okhttp:4.12.0'\n implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0'\n}\n\nPara Maven (pom.xml):
\n<dependency>\n <groupId>com.squareup.okhttp3</groupId>\n <artifactId>okhttp</artifactId>\n <version>4.12.0</version>\n</dependency>\n\nImportante: Certifique-se de que a versão do OkHttp é compatível com a sua versão do Kotlin. A versão mais recente pode sempre ser encontrada no MVNRepository.
\n\nInício rápido
\n\nO exemplo mais simples é executar uma requisição GET e obter o corpo da resposta como uma string.
\n\nimport okhttp3.OkHttpClient\nimport okhttp3.Request\nimport java.io.IOException\n\nfun main() {\n // 1. Criamos o cliente (geralmente um para toda a aplicação)\n val client = OkHttpClient()\n\n // 2. Construímos a requisição\n val request = Request.Builder()\n .url("https://api.github.com/users/octocat")\n .build()\n\n // 3. Executamos a requisição de forma síncrona (bloqueia a thread atual)\n client.newCall(request).execute().use { response ->\n if (!response.isSuccessful) {\n throw IOException("Código inesperado $response")\n }\n // 4. Obtemos o corpo da resposta\n println(response.body?.string())\n }\n}\n\nExplicação:
\n- \n
OkHttpClient()— cria uma instância do cliente. Ela é thread-safe, portanto, recomenda-se criar uma única instância e reutilizá-la. \n Request.Builder()— utiliza o padrão "Builder" para configurar a requisição. \n client.newCall(request)— cria uma nova chamada (Call), que pode ser executada de forma síncrona (execute()) ou assíncrona (enqueue()). \n response.use { ... }— garante que os recursos da resposta (corpo, conexão) sejam fechados após o uso. \n response.body?.string
Também na biblioteca
Axios — Cliente HTTP para JavaScript (Node.js)
Biblioteca WebSocket em C++: guia completo para escolha e uso
Migrações de banco de dados em Swift: ferramentas e práticas para iOS/macOS