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
8-)

7 coisas que todo desenvolvedor web deveria saber

Postado por Carlos Fernando Sylverio | Postado em Blog | Postado em 24-09-2009

0

Olá,

Normalmente quando leio algum artigo interessante os adiciono no twitter, mas acho que esse merece uma atenção especial.

7 coisas que todo desenvolvedor web deveria saber

Boa leitura ;-)