terça-feira, 27 de dezembro de 2011

[Java] Ler dados a partir de uma URL

Seguindo a linha de dicas gerais em Java, trago um código que foi útil para mim em uma situação no trabalho onde eu precisava obter a stream de retorno de um determinado response.

Existem diversas maneiras de trabalhar para resolver essas situações, mas as que utilizei foram as seguintes:


// método utilizando a API httpclient da Apache
protected InputStream getContentFromUrl(String nomeServico, String parametros) throws Exception {
  HttpMethod method = new GetMethod(this.getUrl(nomeServico, parametros));
  HttpClient client = new HttpClient();
  int statusCode = client.executeMethod(method);
  if (statusCode != HttpStatus.SC_OK) {
      throw new Exception("Erro ao tentar recuperar conteudo do XML do serviço "+nomeServico);
  }
  InputStream stream = method.getResponseBodyAsStream();
  stream.close();
  return stream;
}

// método utilizando a API nativa URL, HttpURLConnection
protected InputStream getContentFromUrl(String nomeServico, String parametros) throws Exception {
  InputStream is = null;
  URL url = new URL(this.getUrl(nomeServico, parametros));
  is = url.openStream();
  HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  conn.setDoOutput(true);
  conn.setDefaultUseCaches(true);
  conn.setUseCaches(true);
  conn.setRequestMethod("GET");
  conn.setRequestProperty("Content-type", "text/xml; charset=UTF-8");
  InputStream is = null;
  try {
      is = conn.getInputStream();
  } catch (Exception e) {
      e.printStackTrace();
      is = conn.getErrorStream();
  }
  return is;
}

Segue links de referência:



Nenhum comentário:

Postar um comentário