
Em nosso artigo anterior mostramos como utilizar a biblioteca cURL de maneira geral, rodando em linha de comando no linux. Neste artigo iremos mostrar como usar o cURL em conjunto com o PHP.
Diversas vezes precisamos realizar requisições ou transferir data em nosso código backend. Uma das maneiras mais completas de se fazer isso é utilizando o cURL. Além de requisições simples como GET e POST com ele podemos utilizar vários protocolos como IMAP, POP, FTP e outros.
Básico
Para começar nós devemos chamar a função curl_init()
que retorna um recurso cURL. Esta função aceita um único parâmetro que é a URL para qual a requisição vai ser enviada. Esta URL pode ser informada depois em uma configuração.
$curl = curl_init();
Configurações
Assim que iniciarmos o nosso recurso cURL podemos começar a passar parâmetros para ele, assim configurando nossa requisição. Abaixo listamos alguns parâmetros básicos:
CURLOPT_RETURNTRANSFER
- Retorna a resposta como uma string ao invés de printar na telaCURLOPT_CONNECTTIMEOUT
- Segundos tentando conectar até o timeoutCURLOPT_TIMEOUT
- Segundos limite para execução do cURLCURLOPT_USERAGENT
- String contendo um user-agent para a requisiçãoCURLOPT_URL
- URL para enviar a requisiçãoCURLOPT_PORT
- Para informar uma portaCURLOPT_HTTPHEADER
- Cabeçalhos da requisiçãoCURLOPT_POST
- Envia a requisição como POSTCURLOPT_POSTFIELDS
- Array de informações enviadas como POST
Nós podemos informar um parâmetro usando a função curl_setopt()
, assim como no exemplo abaixo:
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://exemplo.com.br');
É possível informar diversos parâmetros ao mesmo tempo usando a função curl_setopt_array()
e passando um array de opções:
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'http://exemplo.com.br'
]);
Enviando a requisição
Assim que todas as opções estiverem configuradas e sua requisição pronta para ser enviada você deve usar a função curl_exec()
para executar. Os retornos podem ser os seguintes:
false
- Se houve algum erro ao executar a requisiçãotrue
- Se a requisição foi realizada e a opçãoCURLOPT_RETURNTRANSFER
estiver setada parafalse
- A resposta - Se a opção acima estiver setada como
true
o retorno será a resposta da requisição realizada
Utilizando o exemplo anterior nós podemos pegar o resultado da seguinte maneira:
$result = curl_exec($curl);
Com o resultado sendo o retorno da requisição, que pode ser um JSON, uma string ou mesmo HTML
Fechando a requisição
Após realizar a requisição e utilizar os dados retornados é interessante você fechar o cURL para limpar alguns recursos do sistema (como memória RAM), para isto basta usar a função curl_close()
Exemplo - Requisição GET com cURL e PHP
// Cria o cURL
$curl = curl_init();
// Seta algumas opções
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'http://exemplo.com.br/?item1=valor&item2=valor'
]);
// Envia a requisição e salva a resposta
$response = curl_exec($curl);
// Fecha a requisição e limpa a memória
curl_close($curl);
Exemplo - Requisição POST com cURL e PHP
// Cria o cURL
$curl = curl_init();
// Seta algumas opções
curl_setopt_array($curl, [
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => 'http://exemplo.com.br',
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => [
item1 => 'valor',
item2 => 'valor'
]
]);
// Envia a requisição e salva a resposta
$response = curl_exec($curl);
// Fecha a requisição e limpa a memória
curl_close($curl);
Erros
É importante sempre tratar possíveis erros que aconteçam na requisição. Para isso existem duas funções do cURL:
curl_error()
- Retorna uma string com uma mensagem de erro, se a string estiver em branco, nenhum erro aconteceucurl_errno()
- Retorna um código de erro
--
Artigo baseado em http://codular.com/curl-with-php
Comentários