Lendo uma URL com Java

[ad#texto]

Vários desenvolvedores Java tem dificuldade em conseguir ler uma URL qualquer e conseguir obter o seu retorno para então trabalha-lo dentro do seu código, seja o retorno um XML, texto ou HTML.

Neste artigo iremos acionar uma URL utilizando Java e iremos exibir o retorno via console, sem realizar nenhum tipo de tratamento, formas de tratar um HTML ou XML fica para um próximo artigo sobre Java.

O primeiro passo vamos declarar as variáveis que iremos utilizar, a sua própria tipagem já deixa seu uso auto-explicativo:

String linha = "";

DataOutputStream retorno = null;

HttpURLConnection conexao;

BufferedReader bin = null;

StringBuilder fluxo = new StringBuilder();

Agora vamos normalizar a URL e inicializar o processo que irá de fato abrir a conexão e acionar a URL, fazendo o request:

URL urlNormal = new URL(“http://www.minhaurl.com.br”);

conexao = (HttpURLConnection) urlNormal.openConnection();

Agora vamos definir os parâmetros que irão permear toda a conexão com a URL e irá permitir ao Java estabelecer limites e formas de lidar com a requisição:

conexao.setConnectTimeout(250000);

conexao.setRequestMethod("POST");

conexao.setRequestProperty("Content-Type","application/x-www-form-urlencoded");

conexao.setRequestProperty("Content-Length", "" + Integer.toString(params.toString().getBytes().length));

conexao.setRequestProperty("Content-Language", "pt-BR");

conexao.setUseCaches (false);

conexao.setDoInput(true);

conexao.setDoOutput(true);

Neste ponto preste atenção na definição do timeout e veja se é o suficiente para dar o tempo de resposta necessário ao servidor, pois caso contrário o Java irá cortar a requisição antes de finalizado o processo do lado do servidor.

Outro ponto de atenção é quanto ao método, aqui utilizamos o método POST, pois devido ao fato do método GET transitar via URL às informações ele sofre de limite do tamanho da URL formada, veja se realmente o POST irá atender as suas expectativas.

Agora vamos de fato executar o método getOutputStream() que é o responsável por capturar o response do servidor:

retorno = new DataOutputStream (conexao.getOutputStream());

retorno.writeBytes (params.toString());

retorno.flush ();

retorno.close ();

Agora com o response já captura pelo Java vamos trata-lo e deixa-lo disponível para uso pelo restante da sua aplicação:

bin = new BufferedReader(new InputStreamReader(conexao.getInputStream(), "UTF-8"));

while ((linha = bin.readLine()) != null){

  fluxo.append(linha);

}

Para melhorar o retorno da URL vamos tratar o charset do retorno, aqui utilizamos o formato ISO que é o mais comum, mas você pode tratar com qualquer outro formato suportado pelo Java:

String fluxoISO = URLDecoder.decode(fluxo.toString(), "ISO-8859-1");

Muito fácil.

Aqui acionamos uma URL utilizando Java e recuperamos o seu retorno e o tratamos para deixa-lo armazenado em uma String como charset devidamente tratado.

Petter Rafael

Desenvolvedor Web atua com as tecnologias Java e PHP apoiadas pelos bancos de dados Oracle e MySQL. Além dos ambientes de desenvolvimento acima possuiu amplo conhecimento em servidores Apache/Tomcat, Photoshop, Arte & Foto, Flash e mais uma dezena de ferramentas e tecnologias emergentes. Atualmente colabora com o Viablog escrevendo sobre programação e tecnologia.