Consulte el sitio web del proyecto para obtener documentación y API.
HTTP es la forma en que se conectan las aplicaciones modernas. Así es como intercambiamos datos y medios. Hacer HTTP de manera eficiente hace que tus cosas se carguen más rápido y ahorra ancho de banda.
OkHttp es un cliente HTTP eficiente por defecto:
OkHttp persevera cuando la red tiene problemas: se recuperará silenciosamente de problemas de conexión comunes. Si su servicio tiene varias direcciones IP, OkHttp intentará direcciones alternativas si falla la primera conexión. Esto es necesario para IPv4+IPv6 y servicios alojados en centros de datos redundantes. OkHttp admite funciones TLS modernas (TLS 1.3, ALPN, fijación de certificados). Se puede configurar para recurrir a una conectividad amplia.
Usar OkHttp es fácil. Su API de solicitud/respuesta está diseñada con constructores fluidos e inmutabilidad. Admite llamadas de bloqueo sincrónicas y llamadas asíncronas con devoluciones de llamada.
OkHttp sigue especificaciones HTTP modernas como
Cuando la especificación es ambigua, OkHttp sigue agentes de usuario modernos, como navegadores populares o bibliotecas HTTP comunes.
OkHttp tiene principios y evita ser demasiado configurable, especialmente cuando dicha configuración es para solucionar un servidor defectuoso, probar escenarios no válidos o que contradicen el RFC relevante. Existen otras bibliotecas HTTP que llenan ese vacío permitiendo una amplia personalización, incluidas solicitudes potencialmente no válidas.
Limitaciones de ejemplo
Este programa descarga una URL e imprime su contenido como una cadena. Fuente 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 datos en un servicio. Fuente 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 ();
}
}
Hay más ejemplos en la página de recetas OkHttp.
OkHttp funciona en Android 5.0+ (nivel de API 21+) y Java 8+.
OkHttp depende de Okio para E/S de alto rendimiento y de la biblioteca estándar de Kotlin. Ambas son bibliotecas pequeñas con una fuerte compatibilidad con versiones anteriores.
Le recomendamos encarecidamente que mantenga OkHttp actualizado. Al igual que con los navegadores web que se actualizan automáticamente, mantenerse actualizado con los clientes HTTPS es una defensa importante contra posibles problemas de seguridad. Realizamos un seguimiento del ecosistema TLS dinámico y ajustamos OkHttp para mejorar la conectividad y la seguridad.
OkHttp utiliza la implementación TLS integrada de su plataforma. En plataformas Java, OkHttp también es compatible con Conscrypt, que integra BoringSSL con Java. OkHttp utilizará Conscrypt si es el primer proveedor de seguridad:
Security . insertProviderAt ( Conscrypt . newProvider (), 1 );
La rama OkHttp 3.12.x
es compatible con Android 2.3+ (nivel de API 9+) y Java 7+. Estas plataformas carecen de soporte para TLS 1.2 y no deben usarse.
Nuestro registro de cambios tiene un historial de versiones.
La última versión está disponible en Maven Central.
implementation( " com.squareup.okhttp3:okhttp:4.12.0 " )
Hay compilaciones de instantáneas disponibles. Las reglas R8 y ProGuard están disponibles.
Además, tenemos una lista de materiales (BOM) disponible para ayudarle a mantener actualizados los artefactos OkHttp y asegurarse de la compatibilidad de las versiones.
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 incluye una biblioteca para probar clientes HTTP, HTTPS y HTTP/2.
La última versión está disponible en Maven Central.
testImplementation( " com.squareup.okhttp3:mockwebserver:4.12.0 " )
MockWebServer se utiliza, en primer lugar, para pruebas internas y para pruebas básicas de aplicaciones utilizando el cliente OkHttp. No es una biblioteca de pruebas HTTP con todas las funciones desarrollada de forma independiente. No se está desarrollando activamente para nuevas funciones. Como tal, es posible que sus necesidades superen a MockWebServer y que desee utilizar una biblioteca de pruebas con más funciones, como MockServer.
La creación de sus imágenes nativas con Graal https://www.graalvm.org/ debería funcionar automáticamente. Actualmente no se encuentra en una versión final, por lo que se debe utilizar 5.0.0-alpha.2
. Informe cualquier error o solución alternativa que encuentre.
Consulte el módulo okcurl para ver un ejemplo de compilación.
$ ./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.