dez 07

Obtendo Informações de Aplicações Externas com Zend_Http

PHP, Programação, Zend Framework, Zend_Http Deixe um Comentário Zend Framework

A algum tempo atras escrevi um artigo sobre Conexão com Servidores XML-RPC, essa é uma das formas de se obter informações de uma aplicação externa, mas em algumas ocasiões as informações que se deseja buscar estão disponíveis publicamente e não é não existe um servidor XML-RPC para fornecer essas informações, nesse caso podemos realizar requisições HTTP simples no plano de fundo da aplicação para obter o conteúdo de outros sites ou aplicações.

Iniciando uma Requisição HTTP Remota.

Para iniciar uma requisição HTTP remota tudo o que precisa ser feito é abrir uma conexão com o servidor externo através do protocolo HTTP usando para isso a classe Zend_Http da seguinte forma:

$client = new Zend_Http_Client($recipient);

Você ainda poderá passar alguma configurações para essa requisição, como por exemplo limitar o número de redirecionamentos para 0, ou seja, não permitir que o servidor redirecione para outro site ou aplicação, e limitar o tempo de resposta do servidor, para evitar problemas caso o servidor esteja indisponível, essas configurações podem ser feitas da seguinte forma.

$client->setConfig(array(
	'maxredirects' => 0,
	'timeout'      => 30));

Passando Parâmetro para a Requisição.

Além de ajustar as configurações de conexão ainda é possível passar parâmetros para essa requisição, um exemplo dessa utilização e caso seja necessário passar dados pelo método POST, usado frequentemente em formulários, o exemplo a seguir mostra a passagem de alguns dados usando esse método:

$client->setParameterPost(array(
	'search'  => 'Psyco',
	'limit'   => 10,
));

$client->setMethod(Zend_Http_Client::POST);

No exemplo acima estamos passando dois parâmetros através do método POST, o primeiro deles seria um termo de busca e o segundo um limite de respostas que seriam exibidas, esses dados poderiam ser passados para um mecanismo de busca para obter seus resultados.

Obtendo a Reposta

Depois de realizar todas as configurações e passar os parâmetros necessários é hora de receber as resposta desse servidor, a instrução a seguir demonstra como isso deve ser feito:

$response = $client->request();

Essa instrução irá obter a resposta completa do servidor, o que incluíra o cabeçalho do arquivo e da requisição assim como todo o conteúdo da página, você pode filtrar essa requisição e obter somente o cabeçalho ou somente o conteúdo através das instruções abaixo:

$response = $response->getHeader(); //Recebe o cabeçalho
$response = $response->getBody(); //Recebe o conteúdo

Conclusão

Existem diversas formas de comunicação entre diferentes sites ou aplicações, anteriormente falei um pouco sobre as requisições XML-RPC, essa foi a vez de exemplificar um pouco conexões externas utilizando o próprio protocolo HTTP, cada cenário poderá exigir uma solução diferente, cabe ao programador da aplicação definir qual das soluções melhor se adapta as necessidades.

Deixe uma resposta