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.