Consulte o site do projeto para documentação e APIs.
HTTP é a forma como os aplicativos modernos se conectam. É como trocamos dados e mídia. Fazer HTTP com eficiência faz com que seu material carregue mais rápido e economize largura de banda.
OkHttp é um cliente HTTP eficiente por padrão:
OkHttp persevera quando a rede está problemática: ele se recuperará silenciosamente de problemas comuns de conexão. Se o seu serviço tiver vários endereços IP, o OkHttp tentará endereços alternativos se a primeira conexão falhar. Isso é necessário para IPv4+IPv6 e serviços hospedados em data centers redundantes. OkHttp oferece suporte a recursos TLS modernos (TLS 1.3, ALPN, fixação de certificado). Ele pode ser configurado para obter ampla conectividade.
Usar OkHttp é fácil. Sua API de solicitação/resposta foi projetada com construtores fluentes e imutabilidade. Ele suporta chamadas de bloqueio síncronas e chamadas assíncronas com retornos de chamada.
OkHttp segue especificações HTTP modernas, como
Onde a especificação é ambígua, o OkHttp segue agentes de usuário modernos, como navegadores populares ou bibliotecas HTTP comuns.
OkHttp tem princípios e evita ser excessivamente configurável, especialmente quando tal configuração é para solucionar um servidor com bugs, testar cenários inválidos ou que contradizem o RFC relevante. Existem outras bibliotecas HTTP que preenchem essa lacuna, permitindo ampla personalização, incluindo solicitações potencialmente inválidas.
Limitações de exemplo
Este programa baixa uma URL e imprime seu conteúdo como uma string. Fonte completa.
OkHttpClient client = new OkHttpClient ();
String run ( String url ) throws IOException {
Request request = new Request . Builder ()
. url ( url )
. build ();
try ( Response response = client . newCall ( request ). execute ()) {
return response . body (). string ();
}
}
Este programa publica dados em um serviço. Fonte completa.
public static final MediaType JSON = MediaType . get ( "application/json" );
OkHttpClient client = new OkHttpClient ();
String post ( String url , String json ) throws IOException {
RequestBody body = RequestBody . create ( json , JSON );
Request request = new Request . Builder ()
. url ( url )
. post ( body )
. build ();
try ( Response response = client . newCall ( request ). execute ()) {
return response . body (). string ();
}
}
Outros exemplos estão na página Receitas OkHttp.
OkHttp funciona em Android 5.0+ (API de nível 21+) e Java 8+.
OkHttp depende do Okio para E/S de alto desempenho e da biblioteca padrão Kotlin. Ambas são pequenas bibliotecas com forte compatibilidade com versões anteriores.
É altamente recomendável que você mantenha o OkHttp atualizado. Tal como acontece com os navegadores da Web com atualização automática, manter-se atualizado com os clientes HTTPS é uma defesa importante contra possíveis problemas de segurança. Rastreamos o ecossistema TLS dinâmico e ajustamos o OkHttp para melhorar a conectividade e a segurança.
OkHttp usa a implementação TLS integrada da sua plataforma. Em plataformas Java, OkHttp também suporta Conscrypt, que integra BoringSSL com Java. OkHttp usará o Conscrypt se for o primeiro provedor de segurança:
Security . insertProviderAt ( Conscrypt . newProvider (), 1 );
A ramificação OkHttp 3.12.x
suporta Android 2.3+ (API de nível 9+) e Java 7+. Estas plataformas não têm suporte para TLS 1.2 e não devem ser utilizadas.
Nosso log de alterações tem histórico de lançamento.
A versão mais recente está disponível no Maven Central.
implementation( " com.squareup.okhttp3:okhttp:4.12.0 " )
Construções de instantâneo estão disponíveis. As regras R8 e ProGuard estão disponíveis.
Além disso, temos uma lista de materiais (BOM) disponível para ajudá-lo a manter os artefatos do OkHttp atualizados e ter certeza sobre a compatibilidade da versão.
dependencies {
// define a BOM and its version
implementation(platform( " com.squareup.okhttp3:okhttp-bom:4.12.0 " ))
// define any required OkHttp artifacts without version
implementation( " com.squareup.okhttp3:okhttp " )
implementation( " com.squareup.okhttp3:logging-interceptor " )
}
OkHttp inclui uma biblioteca para testar clientes HTTP, HTTPS e HTTP/2.
A versão mais recente está disponível no Maven Central.
testImplementation( " com.squareup.okhttp3:mockwebserver:4.12.0 " )
MockWebServer é usado primeiro para testes internos e para testes básicos de aplicativos usando o cliente OkHttp. Não é uma biblioteca de testes HTTP completa desenvolvida de forma independente. Não está sendo desenvolvido ativamente para novos recursos. Como tal, você pode descobrir que suas necessidades superam o MockWebServer e você pode usar uma biblioteca de testes mais completa, como o MockServer.
Construir suas imagens nativas com Graal https://www.graalvm.org/ deve funcionar automaticamente. Atualmente não está em uma versão final lançada, então 5.0.0-alpha.2
deve ser usado. Por favor, relate quaisquer bugs ou soluções alternativas que você encontrar.
Veja o módulo okcurl para um exemplo de construção.
$ ./gradlew okcurl:nativeImage
$ ./okcurl/build/graal/okcurl https://httpbin.org/get
Copyright 2019 Square, Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.