Share Button
Olá pessoal, na dica de hoje vou apresentar uma excelente biblioteca para realizar requisições Http, sendo uma alternativa a classe HttpURLConnection. Com essa biblioteca evitamos criar uma grande quantidade de código, além disso, ela possui uma grande quantidade de recursos. Outro ponto forte é que a biblioteca Volley é mantida pela Google.

Esse post é baseado no tutorial do site Android Developers: Transmitting Network Data using Volley

Vantagens

A biblioteca Volley possui uma série de vantagens, dentre elas podemos citar:

  • Permite configurar prioridade das requisições;
  • Cancelamento de requisições. Você pode cancelar uma única requisição ou um conjunto de requisições;
  • Permite trabalhar com várias conexões ao mesmo tempo;
  • Todo processo das requisições e realizado em uma Thread separada, com isso evita aquela sensação que a aplicação travou;
  • Implementa mecanismo de cache em memória e disco;
  • Facilidade na customização;
  • Utiliza uma interface de callback para tratar o retorno das requisições;
  • Agendamento automático das requisições da rede.

A biblioteca Volley também é mais rápida pelo motivo de usar um sistema de cache, como citado anteriormente. Além disso, possui implementações padrões para trabalhar com Strings, JSON e com carregamento de imagens.  A única implementação que sua aplicação precisa fazer é implementar um objeto do tipo Request e o resto fica por conta do Volley, fornecendo os recursos que você precisa e permitindo ainda implementar um código customizado.

Outro detalhe importante, é que para quem já trabalhou com a classe HttpURLConnection é necessário utilizar a classe AsyncTask para criar uma Thread e evitar a sensação que sua aplicação travou quando uma requisição é realizada.

É importante citar que o Volley não é recomendado para ser utilizado com downloads grandes ou com operações de streaming. Caso precise realizar operações de download, considere utilizar uma alternativa como a classe DownloadManager.

Como utilizar

Essa é a forma que eu considero mais fácil e também é indica pelo próprio site do Android Developers.

  1. Primeiro de tudo, caso você não tenha o Git instalado em seu computador faça o download neste link: https://git-scm.com/download
  2. Após realizar o download e instalar o Git, você deve clonar do repositório oficial a biblioteca Volley, digitando o seguinte comando no prompt de comando:
    1. git clone https://android.googlesource.com/platform/frameworks/volley
    2. Quando executar o comando acima, ele baixara a biblioteca do repositório no local que estiver apontando em seu prompt de comando, ou seja, se ele estiver apontando para a pasta de usuário, então, a biblioteca ficara nesta pasta, a não ser que você altere antes de executar o comando acima.
  3. Após terminar o download, crie um projeto chamado ExemploVolley, logo após você pode importar para o seu projeto Android a biblioteca Volley clonada, clicando no menu File -> New -> Import Module…

menu-import

Após clicar, será exibido a janela de diálogo para selecionar o local onde você clonou o repositório do Volley. Clique no botão Finish e o Gradle se encarregara de adicionar o Volley ao seu projeto.

dialog-volley

Aguarde até que Gradle termine de adicionar a biblioteca ao seu projeto, ao terminar você deverá vincular a biblioteca ao seu projeto.

Método 1:

Abra o seu arquivo de configuração do Grandle em seu projeto. O arquivo de configuração é algo parecido com a figura abaixo:

arquivogradle

Na seção dependencies adicione a seguinte linha. Após adicionar a linha você deverá clicar na Opção Sync Now que aparecerá na parte superior direita do arquivo de configuração:

compile  project (':volley')

gradle-sync

Método 2:

A segunda forma também é muito simples, basta pressionar as teclas Ctrl + Alt + Shift + S para exibir a janela de configurações do projeto, chamada Project Structure. Após a janela ser exibida clique na guia Dependencies, logo em seguida clique no símbolo com o sinal de “mais” e selecione a opção Module Dependency.

adicionando-a-biblioteca

Será exiba uma janela com as bibliotecas adicionadas ao projeto, neste caso, a biblioteca volley, selecione ela e clique no botão Ok. Clique também no botão Ok da janela Project Structure para finalizar o vinculo da biblioteca.

selecionando-a-biblioteca-volley

Enviando uma simples requisição

Agora demonstrarei para vocês como realizar uma simples requisição utilizando a biblioteca Volley. Primeiro você deve adicionar uma permissão no arquivo AndroidManifest para permitir sua aplicação conectar na rede.

<uses-permission android:name="android.permission.INTERNET" />

Veja a figura figura abaixo com a permissão adicionada no arquivo Manifest.

arquivo-manifest

Agora abra seu arquivo de layout do seu projeto e adicione um componente Webview. Segue abaixo o código do layout.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="br.com.paulovmdutra.exemplovolley">

<uses-permission android:name="android.permission.INTERNET" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

Usando a classe RequestQueue

Para realizar as requisições nos devemos utilizar a classe ResquestQueue. Essa classe é responsável por gerenciar as requisições, sendo que, toda requisição trabalha com uma thread evitando que haja travamento na UI.

Primeiro devemos criar uma instância da classe RequestQueue através da classe Volley utilizando o método newRequestQueue, responsável por definir valores default para a classe. Após criar a instância da classe ResquestQueue devemos passar um objeto do tipo Request para o método add da classe ResquestQueue.

Observe também que foi adicionado um ProgressBarDialog para exibir uma janela para indicar que há algo processando.

Veja o exemplo de código adicionado no método onCreate da classe Activity do projeto.

final WebView webview = (WebView)findViewById(R.id.webview);

final ProgressDialog dialog = new ProgressDialog(this);
dialog.setMessage("Aguarde...");
dialog.show();

RequestQueue queue = Volley.newRequestQueue(this);
String url = "http://www.google.com.br";

//A classe StringRequest realizar uma requisição dada uma URL e retorna uma string como resultado
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
webview.loadData(response,"text/html; charset=UTF-8", null);
dialog.dismiss();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
String res = "<html><head></head><body><h1>Houve uma falha ao carregar a página!</h1></body><html>";
webview.loadData(res,"text/html; charset=UTF-8", null);
dialog.dismiss();
}
});

//Adiciona a requisição para o RequestQueue
queue.add(stringRequest);

Conclusão

Bem, este foi um exemplo simples demonstrando como utilizar o framework Volley, sendo um substituto para a classe HttpURLConnection. Com o framework Volley podemos agilizar o desenvolvimento já que não precisamos nos preocupar, como por exemplo, implementar uma Thread para evitar que nossa UI trave quando há algum processo em execução.

Espero que vocês tenham gostado e até a próxima postagem.

 

Paulo Vinícius Moreira Dutra(c) 2016, 2016 versão 1.0, 28/09/2016

Comments

comments

Leave a Comment