PHP Curl Class facilita o envio de solicitações HTTP e a integração com APIs da web.
Instalação
Requisitos
Início rápido e exemplos
Métodos Disponíveis
Segurança
Solução de problemas
Teste
Contribuindo
Para instalar o PHP Curl Class, execute o seguinte comando:
composer require php-curl-class/php-curl-class
Para instalar a versão mais recente do commit:
composer require php-curl-class/php-curl-class @dev
As instruções de instalação para usar o comando composer
podem ser encontradas em https://github.com/composer/composer.
PHP Curl Class funciona com PHP 8.4, 8.3, 8.2, 8.1, 8.0 e 7.4.
Mais exemplos estão disponíveis em /exemplos.
requer __DIR__ . '/vendor/autoload.php';use CurlCurl;$curl = new Curl();$curl->get('https://www.example.com/');if ($curl->error) {echo 'Erro: ' . $curl->errorMessage . "n";$curl->diagnose(); } else {echo 'Resposta:' . "n";var_dump($curl->resposta); }
// https://www.example.com/search?q=keyword$curl = new Curl();$curl->get('https://www.example.com/search', ['q' = > 'palavra-chave', ]);
$curl = new Curl();$curl->post('https://www.example.com/login/', ['nomedeusuário' => 'meunomedeusuário','senha' => 'minhasenha', ]);
$curl = new Curl();$curl->setBasicAuthentication('nomedeusuário', 'senha');$curl->setUserAgent('MyUserAgent/0.0.1 (+https://www.example.com/bot.html)');$curl->setReferrer('https://www.example.com/url?url=https%3A%2F%2Fwww.example. com%2F');$curl->setHeader('X-Requested-With', 'XMLHttpRequest');$curl->setCookie('key', 'valor');$curl->get('https://www.example.com/');if ($curl->error) {echo 'Erro: ' . $curl->errorMessage . "n"; } else {echo 'Resposta:' . "n";var_dump($curl->resposta); }var_dump($curl->requestHeaders);var_dump($curl->responseHeaders);
$curl = new Curl();$curl->setFollowLocation();$curl->get('https://shortn.example.com/bHbVsP');
$curl = new Curl();$curl->put('https://api.example.com/user/', ['first_name' => 'Zach','last_name' => 'Borboa', ]);
$curl = new Curl();$curl->patch('https://api.example.com/profile/', ['image' => '@path/to/file.jpg', ]);
$curl = new Curl();$curl->patch('https://api.example.com/profile/', ['image' => new CURLFile('caminho/para/arquivo.jpg'), ]);
$curl = new Curl();$curl->delete('https://api.example.com/user/', ['id' => '1234', ]);
// Habilite todos os tipos de codificação suportados e baixe um arquivo.$curl = new Curl();$curl->setOpt(CURLOPT_ENCODING , '');$curl->download('https://www.example.com/file .bin', '/tmp/meuarquivo.bin');
// Acesso aos cabeçalhos sem distinção entre maiúsculas e minúsculas.$curl = new Curl();$curl->download('https://www.example.com/image.png', '/tmp/myimage.png');echo $curl->responseHeaders['Content-Type'] . "n"; // imagem/pngecho $curl->responseHeaders['CoNTeNT-TyPE'] . "n"; //imagem/png
// Limpeza manual.$curl->close();
// Exemplo de acesso ao curl object.curl_set_opt($curl->curl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatível; MSIE 7.0; Windows NT 5.1');curl_close($curl->curl);
requer __DIR__ . '/vendor/autoload.php';use CurlMultiCurl;// Solicitações em paralelo com funções de retorno de chamada.$multi_curl = new MultiCurl();$multi_curl->success(function($instance) {echo 'call to "' . $instance ->url . '" foi bem sucedido.' . "n";echo 'resposta:' . "n";var_dump($instance->response); });$multi_curl->error(function($instance) {echo 'call to "' . $instance->url . '" não teve êxito.' . "n";echo 'código de erro: ' . $instance-> errorCode . "n";echo 'mensagem de erro: ' .$instance->errorMessage . });$multi_curl->complete(function($instance) {echo 'chamada concluída' . "n"; });$multi_curl->addGet('https://www.google.com/search', ['q' => 'olá mundo', ]);$multi_curl->addGet('https://duckduckgo.com/', ['q' => 'olá mundo', ]);$multi_curl->addGet('https://www.bing.com/search', ['q' => 'olá mundo', ]);$multi_curl->start(); // Bloqueia até que todos os itens da fila tenham sido processados.
Mais exemplos estão disponíveis em /exemplos.
Curl::__construct($base_url = null, $options = []) Curl::__destruct() Curl::__get($nome) Curl::afterSend($callback) Curl::tentativaRetry() Curl::beforeSend($callback) Curl::buildPostData($dados) Curl::chamar() Curl::fechar() Curl::complete($callback) Curl::delete($url, $query_parameters = [], $dados = []) Curl::diagnose($return = false) Curl::disableTimeout() Curl::displayCurlOptionValue($opção, $valor = null) Curl::download($url, $nome_do_arquivo_misto) Curl::error($callback) Curl::exec($ch = null) Curl::execDone() Curl::fastDownload($url, $nome do arquivo, $conexões = 4) Curl::get($url, $dados = []) Curl::getAttempts() Curl::getBeforeSendCallback() Curl::getCompleteCallback() Curl::getCookie($chave) Curl::getCurl() Curl::getCurlErrorCode() Curl::getCurlErrorMessage() Curl::getDownloadCompleteCallback() Curl::getDownloadFileName() Curl::getErrorCallback() Curl::getErrorCode() Curl::getErrorMessage() Curl::getFileHandle() Curl::getHttpErrorMessage() Curl::getHttpStatusCode() Curl::getId() Curl::getInfo($opt = null) Curl::getJsonDecoder() Curl::getOpt($opção) Curl::getOptions() Curl::getRawResponse() Curl::getRawResponseHeaders() Curl::getRemainingRetries() Curl::getRequestHeaders() Curl::getResponse() Curl::getResponseCookie($key) Curl::getResponseCookies() Curl::getResponseHeaders() Curl::getRetries() Curl::getRetryDecider() Curl::getSuccessCallback() Curl::getUrl() Curl::getUserSetOptions() Curl::getXmlDecoder() Curl::head($url, $dados = []) Curl::isChildOfMultiCurl() Curl::isCurlError() Curl::isError() Curl::isHttpError() Curl::options($url, $dados = []) Curl::patch($url, $dados = []) Curl::post($url, $dados = '', $follow_303_with_post = falso) Curl::progress($callback) Curl::put($url, $dados = []) Curl::removeHeader($key) Curl::reset() Curl::search($url, $dados = []) Curl::setAutoReferer($auto_referer = true) Curl::setAutoReferrer($auto_referrer = true) Curl::setBasicAuthentication($nomedeusuário, $senha = '') Curl::setConnectTimeout($segundos) Curl::setCookie($chave, $valor) Curl::setCookieFile($cookie_file) Curl::setCookieJar($cookie_jar) Curl::setCookieString($string) Curl::setCookies($cookies) Curl::setDefaultDecoder($mixed = 'json') Curl::setDefaultHeaderOut() Curl::setDefaultJsonDecoder() Curl::setDefaultTimeout() Curl::setDefaultUserAgent() Curl::setDefaultXmlDecoder() Curl::setDigestAuthentication($nomedeusuário, $senha = '') Curl::setFile($arquivo) Curl::setFollowLocation($follow_location = true) Curl::setForbidReuse($forbid_reuse = verdadeiro) Curl::setHeader($chave, $valor) Curl::setHeaders($cabeçalhos) Curl::setInterface($interface) Curl::setJsonDecoder($misto) Curl::setMaxFilesize($bytes) Curl::setMaximumRedirects($maximum_redirects) Curl::setOpt($opção, $valor) Curl::setOpts($opções) Curl::setPort($porta) Curl::setProtocols($protocolos) Curl::setProxy($proxy, $porta = nulo, $nomedeusuário = nulo, $senha = nulo) Curl::setProxyAuth($auth) Curl::setProxyTunnel($túnel = verdadeiro) Curl::setProxyType($type) Curl::setRange($range) Curl::setRedirectProtocols($redirect_protocols) Curl::setReferer($referente) Curl::setReferrer($referrer) Curl::setRetry($misto) Curl::setStop($callback=nulo) Curl::setTimeout($segundos) Curl::setUrl($url, $mixed_data = '') Curl::setUserAgent($user_agent) Curl::setXmlDecoder($misto) Curl::parar() Curl::sucesso($retorno de chamada) Curl::unsetHeader($key) Curl::unsetProxy() Curl::verbose($on = true, $output = 'STDERR') MultiCurl::__construct($base_url = null) MultiCurl::__destruct() MultiCurl::addCurl(Curl $curl) MultiCurl::addDelete($url, $query_parameters = [], $dados = []) MultiCurl::addDownload($url, $mixed_filename) MultiCurl::addGet($url, $dados = []) MultiCurl::addHead($url, $dados = []) MultiCurl::addOptions($url, $dados = []) MultiCurl::addPatch($url, $dados = []) MultiCurl::addPost($url, $dados = '', $follow_303_with_post = falso) MultiCurl::addPut($url, $dados = []) MultiCurl::addSearch($url, $dados = []) MultiCurl::afterSend($callback) MultiCurl::beforeSend($callback) MultiCurl::fechar() MultiCurl::complete($callback) MultiCurl::disableTimeout() MultiCurl::error($callback) MultiCurl::getActiveCurls() MultiCurl::getOpt($opção) MultiCurl::removeHeader($key) MultiCurl::setAutoReferer($auto_referer = true) MultiCurl::setAutoReferrer($auto_referrer = true) MultiCurl::setBasicAuthentication($nomedeusuário, $senha = '') MultiCurl::setConcurrency($concurrency) MultiCurl::setConnectTimeout($segundos) MultiCurl::setCookie($chave, $valor) MultiCurl::setCookieFile($cookie_file) MultiCurl::setCookieJar($cookie_jar) MultiCurl::setCookieString($string) MultiCurl::setCookies($cookies) MultiCurl::setDigestAuthentication($nomedeusuário, $senha = '') MultiCurl::setFile($arquivo) MultiCurl::setFollowLocation($follow_location = true) MultiCurl::setForbidReuse($forbid_reuse = verdadeiro) MultiCurl::setHeader($chave, $valor) MultiCurl::setHeaders($cabeçalhos) MultiCurl::setInterface($interface) MultiCurl::setJsonDecoder($misto) MultiCurl::setMaximumRedirects($maximum_redirects) MultiCurl::setOpt($opção, $valor) MultiCurl::setOpts($opções) MultiCurl::setPort($porta) MultiCurl::setProxies($proxies) MultiCurl::setProxy($proxy, $porta = nulo, $nomedeusuário = nulo, $senha = nulo) MultiCurl::setProxyAuth($auth) MultiCurl::setProxyTunnel($tunnel = true) MultiCurl::setProxyType($type) MultiCurl::setRange($range) MultiCurl::setRateLimit($taxa_limite) MultiCurl::setReferer($referer) MultiCurl::setReferrer($referrer) MultiCurl::setRequestTimeAccuracy() MultiCurl::setRetry($misto) MultiCurl::setTimeout($segundos) MultiCurl::setUrl($url, $mixed_data = '') MultiCurl::setUserAgent($user_agent) MultiCurl::setXmlDecoder($misto) MultiCurl::start() MultiCurl::parar() MultiCurl::sucesso($retorno de chamada) MultiCurl::unsetHeader($chave) MultiCurl::unsetProxy() MultiCurl::verbose($on = true, $output = 'STDERR')
Consulte SEGURANÇA para considerações de segurança.
Consulte SOLUÇÃO DE PROBLEMAS para obter ajuda na solução de problemas.
Consulte TESTE para obter informações de teste.
Verifique se há problemas em aberto ou abra um novo problema para iniciar uma discussão sobre um bug ou recurso.
Bifurque o repositório no GitHub para começar a fazer suas alterações.
Escreva um ou mais testes para o novo recurso ou que exponham o bug.
Faça alterações no código para implementar o recurso ou corrigir o bug.
Envie uma solicitação pull para mesclar e publicar suas alterações.