Requisição HTTP com Java Application Parte 2
Postado por Carlos Fernando Sylverio | Postado em Programação | Postado em 25-09-2009
0
Olá pessoal,
No post anterior Requisição HTTP com Java Application Parte 1 , falei um pouco sobre como obter o conteúdo de uma página web. Mas nem sempre somente o conteúdo de uma página nos interessa.
Na maioria das vezes necessitamos que de uma interação com a página (ou páginas) por meio de troca de informação, ou seja, enviamos dados, a página processa os dados e nos retorna a informação.
Para isso iremos trabalhar com o objeto URLConnection, objeto existente no pacote java.net.
Veja o exemplo abaixo:
package teste.comunication; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; public class TesteComunicacao { public static void main(String[] args) throws MalformedURLException, IOException { try{ // monta estrutura de parametros a serem eviados String data = URLEncoder.encode( "nome", "UTF-8" ) + "=" + URLEncoder.encode( "Fernando", "UTF-8" ); URL url = new URL( "http://localhost/get_name.php" ); URLConnection urlConnection = url.openConnection(); // envia dados urlConnection.setDoOutput(true); OutputStreamWriter outputWriter = new OutputStreamWriter(urlConnection.getOutputStream()); outputWriter.write(data); outputWriter.flush(); // Obtem as respostas InputStreamReader inputReader = new InputStreamReader(urlConnection.getInputStream()); BufferedReader bufferedReader = new BufferedReader( inputReader ); System.out.println( "\n** retorno da página web **" ); String linha = ""; while ( (linha = bufferedReader.readLine()) != null){ System.out.println(linha); } } catch (Exception e) { System.out.println( e.getMessage() ); } } }
Após instânciar o objeto URL, podemos obter o objeto URLConnection através do seu método openConnection.
O método urlConnection.setDoOutput(true); é executado para informar que será enviado parâmetros.
Depois obtemos o stream de saída e enviamos os dados (obs: esses dados são enviados via método POST).
O retorno é obtido através do método urlConnection.getInputStream que é tratado por meio do objeto InputStreamReader.
Para simular o processamento dos dados enviados gerei um arquivo PHP com o seguinte código:
<?php
$response = $_POST['nome'];
echo "Conteúdo recebido: ";
echo $response;
?>
Ele simplesmente lê o dado recebido e gera uma resposta apartir das informações obtidas.
Enjoy


seguidores
leitores