Utilizando POST e GET com cURL no Magento

Originalmente concebidos para implementação de formulários, os métodos GET e POST são utilizados para mais diversas situações onde é necessário enviarmos dados para um servidor. Irei mostrar uma forma simples de trabalhar com ambos no ambiente Magento através da biblioteca cURL, nativa no Magento.

O que é cURL?

CURL é uma biblioteca criada por Daniel Stenberg, que permite a você conectar e comunicar com vários tipos diferentes de servidor com vários tipos diferentes de protocolos. libcurl atualmente suporta os protocolos http, https, ftp, gopher, telnet, dict, file, e ldap. libcurl também suporta certificados HTTPS, HTTP POST, HTTP PUT, upload com FTP (isto também pode ser feito com a extensão de ftp do PHP), upload baseado em formulário HTTP, proxies, cookies, e autenticação usuário+senha.

Fonte: http://www.php.net/manual/pt_BR/intro.curl.php

No Magento existe a classe Varien_Http_Adapter_Curl, que implementa a biblioteca CURL.

Veja um exemplo do CURL do Magento em ação:

$http = new Varien_Http_Adapter_Curl();
$config = array('timeout' => 30);

if ($this->getUseCertAuthentication()) {
 $config['ssl_cert'] = $this->getApiCertificate();
}

$http->setConfig($config);

$http->write(Zend_Http_Client::POST, $this->getApiUrl(), '1.1', array(), $requestQuery);
$result = $http->read();

O objeto $http é nossa instancia da classe Curl. No exemplo mostro 2 opções de configurações: timeout e utilização de SSL na requisição. Enquanto o método write aciona o POST, o método read pega a resposta do servidor, a qual podemos tratar para saber se houve sucesso ou erro na requisição.

E como utilizar GET e POST na maneira Magento?!

Trabalhar com GET no Magento é parecido com a forma tradicional. Passamos os parâmetros pela url, sendo o primeiro parâmetro precedido pelo caractere ‘?’ e utilizando o caractere & para separar os próximos parâmetros.

Para enviar um POST, podemos utilizar o método write (como feito no exemplo acima).

O método write tem a seguinte anatomia:

string write (string $method, Zend_Uri_Http $url, [string $http_ver = '1.1'], [array $headers = array()], [string $body = ''])

Logo apenas definindo o método (Zend_Http_Client::POST) e a url de destino do post, conseguimos fazer nosso POST no ambiente Magento. Note que pode fazer múltiplos POSTs no Magento, por exemplo, em um controller de algum módulo.

Agora para receber as informações provindas de um GET , fazemos da seguinte forma:

$this->getRequest()->getParams();
// ou
param = $this->getRequest()->getParam('param');

A primeira forma me retorna um Array com todas as variáveis passadas. Já a segunda forma retorna apenas a variável passada como argumento. Para recuperar as informações recebidas por POST podemos fazer também de forma muito semelhante:

$this->getResponse()->getPost();
// ou
param = $this->getResponse()->getPost('param');

A primeira forma me retorna um Array com todas as variáveis passadas.

Já a segunda forma retorna apenas a variável passada como argumento.

[toggle title=”Fonte”]
http://denisspalenza.com/
[/toggle]

2014-08-29T14:05:50+00:00

RECEBA DICAS VALIOSAS NO SEU EMAIL

x