Obtendo Informações de Aplicações Externas com Zend_Http
Deixe um Comentário
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.