java - tutorial - retrofit post example
¿Por qué usar Retrofit cuando tenemos OkHttp? (5)
con OkHttp podemos hacer una solicitud HTTP y luego obtener una respuesta del servidor ... luego con Gson lib convertir la respuesta al objeto que necesitamos
Tenga en cuenta que en su fragmento de código, omitió dos pasos notables: generar la URL y analizar el JSON usando Gson.
¿Entonces mi pregunta es para qué es exactamente Retrofit?
Es para generar la URL (usando un código generado con reconocimiento de tipo vinculado a su API REST específica) y analizar el JSON usando Gson. En otras palabras, hace lo que omitió en su fragmento de código.
Además, para ciertos tipos de operaciones REST (por ejemplo, POST), ayuda un poco a la hora de ensamblar qué enviar (por ejemplo, generar el formulario codificado).
Por definición, no necesita usar Retrofit. La actualización es un código de computadora, escrito por programadores de computadoras. Alguien más podría escribir código para hacer lo que hace Retrofit.
por qué Retrofit usa OkHttp
La actualización debe realizar operaciones HTTP. Utiliza OkHttp donde esté disponible, para todo lo que OkHttp proporciona: soporte HTTP / 2 y SPDY, interceptores conectables, etc.
con OkHttp podemos hacer una solicitud HTTP y luego obtener una respuesta del servidor
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
luego con Gson lib convert la respuesta al objeto que necesitamos.
esto es de Square / OkHttp doc:
Su API de solicitud / respuesta está diseñada con constructores fluidos e inmutabilidad. Admite llamadas de bloqueo síncrono y llamadas asíncronas con devoluciones de llamada
Leí de stackOverFlow
La actualización usa OkHTTP automáticamente si está disponible
.
¿Entonces mi pregunta es para qué es exactamente Retrofit?
¿Qué Retrofit puede hacer que OkHttp no puede?
Creo que OkHttp y Gson resuelven el problema de la API de solicitud, entonces, ¿qué problema nos soluciona Retrofit?
Debería usar la actualización si está tratando de asignar la API de su servidor dentro de su aplicación (type-safeing). Retrofit es solo un adaptador API envuelto sobre okHTTP.
Si desea escribir de forma segura y modularizar el código de interacción con su API, utilice la actualización. Aparte de eso, el rendimiento subyacente, los valores predeterminados de solicitud, etc. de okHTTP y Retrofit son los mismos.
También recomendaría escuchar this podcast de Jesse Wilson (desarrollador de los principales clientes HTTP de Android), donde habla en profundidad de la historia del desarrollo del cliente HTTP Apache, HTTPURLConnection, okHTTP y Retrofit.
El problema que Retrofit resuelve es: los códigos de OKHttp para obtener un objeto de un servidor remoto son muchos.
Retrofit es un cliente REST para Android y Java de Square. Hace que sea relativamente fácil recuperar y cargar JSON (u otros datos estructurados) a través de un servicio web basado en REST. En Retrofit, configura qué convertidor se utiliza para la serialización de datos. Por lo general, para JSON, usa GSon, pero puede agregar convertidores personalizados para procesar XML u otros protocolos. Retrofit usa la biblioteca OkHttp para solicitudes HTTP. Debes usar retrofit sobre okhttp por su facilidad, por sus características.
Retrofit vs. OkHttp La razón es simple : OkHttp es un cliente HTTP / SPDY puro responsable de cualquier operación de red de bajo nivel, almacenamiento en caché, manipulación de solicitudes y respuestas, y muchos más. Por el contrario, Retrofit es una compilación de abstracción REST de alto nivel sobre OkHttp. Retrofit 2 está fuertemente acoplado con OkHttp y hace un uso intensivo de él.
Funciones OkHttp: agrupación de conexiones, gzipping, almacenamiento en caché, recuperación de problemas de red, sincronización y llamadas asíncronas, redireccionamientos, reintentos ... y así sucesivamente.
Funciones de modificación: manipulación de URL, solicitud, carga, almacenamiento en caché, subprocesos, sincronización ... Permite la sincronización y las llamadas asíncronas.