Como fazer requisição HTTP no Android com OkHttp: guia para consumir APIs

Matheus Brandino
Matheus Brandino

Compartilhe

Avalie este artigo

5 minutos de leitura

Ao desenvolver aplicativos Android, uma das necessidades mais comuns é consumir APIs através de requisições HTTP, utilizando bibliotecas como OkHttp para integrar dados externos.

Este artigo mostra passo a passo como fazer requisições com OkHttp no Android, respondendo dúvidas como: qual é a melhor biblioteca para requisição, como enviar JSON no Android com OkHttp, e quando usar OkHttp ou Retrofit. 

public class WebClient { 
// métodos para comunicação com servidor 
}


Até o Android 5.0 (API 22), era possível utilizar a biblioteca Apache HttpClient. A partir do Android 6.0 (API 23), o Apache HttpClient foi removido do Android SDK. Desde então, o Google recomenda usar HttpURLConnection ou bibliotecas modernas como OkHttp. 

Banner da Alura para o Prêmio Reclame AQUI 2026, convidando o público a votar na escola na categoria Cursos Profissionalizantes. A mensagem destaca a participação da Alura na premiação e traz o botão “Vote agora” para registrar o voto.
public class WebClient { 
public String post(String json) throws IOException { 
URL url = new URL("http://www.umsitequalquer.com.br/fazPost"); 
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
connection.setRequestMethod("POST"); 
connection.setRequestProperty("Content-type", "application/json"); connection.setRequestProperty("Accept", "application/json"); 
connection.setDoOutput(true); 
PrintStream printStream = new PrintStream(connection.getOutputStream()); printStream.println(json); 
connection.connect(); 
String jsonDeResposta = new Scanner(connection.getInputStream()).next(); 
return jsonDeResposta; } 
public String get() throws IOException { 
URL url = new URL("http://www.umsitequalquer.com.br/fazGet"); 
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
connection.setRequestMethod("GET"); 
connection.setRequestProperty("Accept", "application/json"); 
connection.connect(); 
String jsonDeResposta = new Scanner(connection.getInputStream()).next(); 
return jsonDeResposta; } 
}

Normalmente, a nossa classe WebClient terá uma estrutura semelhante a essa, podendo conter mais métodos para outros tipos de requisição. Apesar de funcionar, o código fica muito verboso e repetitivo. Felizmente, existe uma maneira de simplificar esse processo, que exploraremos a seguir. 

Por que escolher OkHttp para chamadas de API no Android? Hoje, entre as opções modernas, OkHttp se destaca por sua simplicidade e performance, além de funcionar tanto para projetos em Java quanto para requisições HTTP em Kotlin. 

Para adicioná-la ao projeto, é necessário registrá-la no arquivo build.gradle

dependencies { compile 'com.android.support:appcompat-v7:21.0.3' compile 'com.squareup.okhttp3:okhttp:5.4.0' } 

O OkHttp oferece métodos fáceis para fazer requisição GET e POST no Android, e pode ser integrado facilmente ao Kotlin e com coroutines para chamadas assíncronas altamente performáticas. 

public class WebClient { 
public String post(String json) throws IOException { 
OkHttpClient client = new OkHttpClient(); // restante do código 
} 
}

Para realizar a requisição ao servidor, utilizamos o método newCall(), que, quando executado, retorna a resposta do servidor: 

public class WebClient { 
public String post(String json) throws IOException { 
OkHttpClient client = new OkHttpClient(); Response response = client.newCall().execute(); 
// restante do código 
} 
}

No exemplo acima, ainda não definimos qual tipo de requisição será realizada. Por isso, é necessário criar uma requisição personalizada: 

public class WebClient { 
public String post(String json) throws IOException { 
OkHttpClient client = new OkHttpClient(); 
String url = "http://www.umsitequalquer.com.br/fazPost"; 
Request.Builder builder = new Request.Builder(); 
builder.url(url); 
MediaType mediaType = MediaType.parse("application/json; charset=utf-8"); RequestBody body = RequestBody.create(mediaType, json); builder.post(body); // Exemplo de como enviar JSON com OkHttp no Android 
Request request = builder.build(); 
Response response = client.newCall(request).execute(); 
// restante do código 
} }

Como visto no código, criar uma requisição manualmente pode ser trabalhoso. Por isso, utilizamos um Builder, que facilita o envio das informações necessárias, como a URL.

Para definir o corpo do POST, usamos o objeto RequestBody, criado através do método estático create, que recebe o tipo de conteúdo (definido em MediaType) e os dados que serão enviados no corpo da requisição. 

Agora com o corpo da requisição pronto, temos que informar ao nosso Builder que nossa requisição será um POST, passando o corpo da requisição. Com isso pronto, basta criarmos a requisição, atráves do método build()

Feito tudo isso, falta agora pegarmos o corpo da resposta e devolver como resposta do nosso método, igual fazíamos antes : 

public class WebClient { 
public String post(String json) throws IOException { 
OkHttpClient client = new OkHttpClient(); 
String url = "http://www.umsitequalquer.com.br/fazPost"; 
Request.Builder builder = new Request.Builder(); 
builder.url(url); 
MediaType mediaType = MediaType.parse("application/json; charset=utf-8"); RequestBody body = RequestBody.create(mediaType, json); builder.post(body); 
Request request = builder.build(); 
Response response = client.newCall(request).execute(); 
String jsonDeResposta = response.body().string(); return jsonDeResposta; 
} }

Para pegarmos o corpo da resposta, temos o método body(), que retorna um ResponseBody e para transformarmos ele em String usamos o método string(). Desta forma, o nosso POST está terminado, ficou faltando fazermos o GET

public String get() throws IOException { 
String url = "http://www.umsitequalquer.com.br/fazGet"; 
OkHttpClient client = new OkHttpClient(); 
Request request = new Request.Builder().url(url).build(); 
Response response = client.newCall(request).execute(); 
String jsonDeResposta = response.body().string(); 
return jsonDeResposta; }

Como podemos ver, não muda praticamente nada do que fizemos anteriormente, exceto por não termos que falar que estamos fazendo um GET, pois já é definido por padrão. 

Qual você prefere, a utilização da biblioteca nativa do Java ou usar a biblioteca OkHttp ? Vimos aqui como utilizar a biblioteca do OkHttp 3 para facilitar nossas requisições, evitando muito código e de leitura bem mais simples ! 

Quer saber mais sobre Android ? Aqui no Alura temos alguns cursos bem bacanas, confere clicando aqui

Avalie este artigo 

✨ Agradecemos pela sua avaliação! ✨ 

Avalie este artigo

Matheus Brandino
Matheus Brandino

Matheus é desenvolvedor com foco em Java e mobile (Android), formado em Sistemas de Informação.

Veja outros artigos sobre Mobile

Estude 2 anos por R$ 158/mês. Planos com até 35% OFF. Ver planos.