com OkHttp podemos fazer um pedido HTTP e obter a resposta do servidor
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
então, com Gson lib converter a resposta para o objeto que precisamos.
este é do documento Square / OkHttp:
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
Eu li de stackOverFlow
Retrofit usa OkHTTP automaticamente se disponível
.
Minha pergunta é para que serve exatamente o Retrofit?
o que o Retrofit pode fazer que o OkHttp não pode ?!
Acho que OkHttp e Gson resolvem o problema da API de solicitação, então que problema o Retrofit resolve para nós?
Call
padrão OkHttp, o interceptor OkHttp, a fixação de certificados etc.Respostas:
Observe que, em seu snippet de código, você ignorou duas etapas notáveis: gerar a URL e realmente analisar o JSON usando Gson.
É para gerar a URL (usando o código gerado com reconhecimento de tipo vinculado à sua API REST específica) e realmente analisar o JSON usando Gson. Em outras palavras, ele faz o que você ignorou em seu trecho de código.
Além disso, para certos tipos de operações REST (por exemplo, POST), isso ajuda um pouco na montagem do que enviar (por exemplo, gerar o formulário codificado).
Por definição, você não precisa usar Retrofit. Retrofit é um código de computador, escrito por programadores de computador. Outra pessoa poderia escrever código para fazer o que o Retrofit faz.
O retrofit precisa realizar operações HTTP. Ele usa OkHttp quando disponível, para tudo o que OkHttp fornece: suporte HTTP / 2 e SPDY, interceptores conectáveis, etc.
fonte
Você deve usar o retrofit se estiver tentando mapear a API do seu servidor dentro do seu aplicativo (proteção de tipo). O retrofit é apenas um adaptador de API agrupado em okHTTP.
Se você deseja digitar com segurança e modularizar o código de interação com sua API, use o retrofit. Além disso, o desempenho subjacente, padrões de solicitação, etc de okHTTP e Retrofit são os mesmos.
Também recomendo ouvir este podcast de Jesse Wilson (desenvolvedor dos principais clientes HTTP Android), onde ele fala a fundo sobre a história de desenvolvimento do cliente Apache HTTP, HTTPURLConnection, okHTTP e Retrofit.
fonte
Retrofit vs. OkHttp O motivo é simples : OkHttp é um cliente HTTP / SPDY puro responsável por qualquer operação de rede de baixo nível, armazenamento em cache, manipulação de solicitação e resposta e muito mais. Em contraste, Retrofit é uma abstração REST de alto nível construída sobre OkHttp. O Retrofit 2 está fortemente acoplado ao OkHttp e faz uso intensivo dele.
Funções OkHttp: pool de conexão, gzip, cache, recuperação de problemas de rede, sincronização e chamadas assíncronas, redirecionamentos, novas tentativas ... e assim por diante.
Funções de Retrofit: Manipulação de URL, solicitação, carregamento, caching, threading, sincronização ... Permite sincronizar e fazer chamadas assíncronas.
fonte
Retrofit é um cliente REST para Android e Java da Square. Isso torna relativamente fácil recuperar e fazer upload de JSON (ou outros dados estruturados) por meio de um serviço da Web baseado em REST. No Retrofit, você configura qual conversor é usado para a serialização de dados. Normalmente, para JSON, você usa GSon, mas pode adicionar conversores personalizados para processar XML ou outros protocolos. O retrofit usa a biblioteca OkHttp para solicitações HTTP. Você deve usar retrofit em vez de okhttp por sua facilidade, por seus recursos.
fonte