PHP Curl Class facilita el envío de solicitudes HTTP y la integración con API web.
Instalación
Requisitos
Inicio rápido y ejemplos
Métodos disponibles
Seguridad
Solución de problemas
Pruebas
Contribuyendo
Para instalar PHP Curl Class, ejecute el siguiente comando:
composer require php-curl-class/php-curl-class
Para instalar la última versión de confirmación:
composer require php-curl-class/php-curl-class @dev
Las instrucciones de instalación para usar el comando composer
se pueden encontrar en https://github.com/composer/composer.
PHP Curl Class funciona con PHP 8.4, 8.3, 8.2, 8.1, 8.0 y 7.4.
Hay más ejemplos disponibles en /ejemplos.
requiere __DIR__ . '/vendor/autoload.php';use CurlCurl;$curl = new Curl();$curl->get('https://www.example.com/');if ($curl->error) {echo 'Error: ' . $curl->errorMessage. "n";$curl->diagnose(); } else {echo 'Respuesta:'. "n";var_dump($curl->respuesta); }
// https://www.example.com/search?q=palabra clave$curl = new Curl();$curl->get('https://www.example.com/search', ['q' = > 'palabra clave', ]);
$curl = new Curl();$curl->post('https://www.example.com/login/', ['nombre de usuario' => 'minombre de usuario','contraseña' => 'micontraseña', ]);
$curl = new Curl();$curl->setBasicAuthentication('nombre de usuario', 'contraseña');$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 'Error: ' . $curl->errorMessage. "norte"; } else {echo 'Respuesta:'. "n";var_dump($curl->respuesta); }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('ruta/al/archivo.jpg'), ]);
$curl = nuevo Curl();$curl->delete('https://api.example.com/user/', ['id' => '1234', ]);
// Habilite todos los tipos de codificación admitidos y descargue un archivo.$curl = new Curl();$curl->setOpt(CURLOPT_ENCODING , '');$curl->download('https://www.example.com/file .bin', '/tmp/miarchivo.bin');
// Acceso que no distingue entre mayúsculas y minúsculas a los encabezados.$curl = new Curl();$curl->download('https://www.example.com/image.png', '/tmp/myimage.png');echo $curl->responseHeaders['Tipo de contenido'] . "norte"; // imagen/pngecho $curl->responseHeaders['CoNTeNT-TyPE'] . "norte"; // imagen/png
// Limpieza manual.$curl->close();
// Ejemplo de acceso a curl object.curl_set_opt($curl->curl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1');curl_close($curl->curl);
requiere __DIR__ . '/vendor/autoload.php';use CurlMultiCurl;// Solicitudes en paralelo con funciones de devolución de llamada.$multi_curl = new MultiCurl();$multi_curl->success(function($instance) {echo 'llamada a "' . $instance ->url '" fue exitoso.' . "n";echo 'respuesta:'. "n";var_dump($instancia->respuesta); });$multi_curl->error(function($instancia) {echo 'llamada a "' . $instancia->url . '" no tuvo éxito.' . "n";echo 'código de error: ' . $instancia-> código de error "n";echo 'mensaje de error:' $instancia->mensajedeerror "n"; });$multi_curl->complete(function($instance) {echo 'llamada completada'. "n"; });$multi_curl->addGet('https://www.google.com/search', ['q' => 'hola mundo', ]);$multi_curl->addGet('https://duckduckgo.com/', ['q' => 'hola mundo', ]);$multi_curl->addGet('https://www.bing.com/search', ['q' => 'hola mundo', ]);$multi_curl->start(); // Bloquea hasta que se hayan procesado todos los elementos de la cola.
Hay más ejemplos disponibles en /ejemplos.
Curl::__construct($base_url = null, $opciones = []) Curl::__destruct() Rizo::__get($nombre) Curl::después de enviar($devolución de llamada) Curl::intentoReintentar() Curl::antes de enviar($devolución de llamada) Curl::buildPostData($datos) Curl::llamar() Curl::cerrar() Curl::completo($devolución de llamada) Curl::delete($url, $query_parameters = [], $datos = []) Curl::diagnose($retorno = falso) Curl::disableTimeout() Curl::displayCurlOptionValue($opción, $valor = nulo) Curl::descargar($url, $nombre_archivo_mixto) Curl::error($devolución de llamada) Curl::exec($ch = nulo) Curl::execDone() Curl::fastDownload($url, $nombre de archivo, $conexiones = 4) Curl::get($url, $datos = []) Curl::getAttempts() Curl::getBeforeSendCallback() Curl::getCompleteCallback() Curl::getCookie($clave) Rizo::getCurl() Curl::getCurlErrorCode() Curl::getCurlErrorMessage() Curl::getDownloadCompleteCallback() Curl::getDownloadFileName() Curl::getErrorCallback() Curl::getErrorCode() Curl::getErrorMessage() Curl::getFileHandle() Curl::getHttpErrorMessage() Curl::getHttpStatusCode() Rizo::getId() Curl::getInfo($opt = nulo) Curl::getJsonDecoder() Curl::getOpt($opción) Curl::getOptions() Curl::getRawResponse() Curl::getRawResponseHeaders() Curl::getRemainingRetries() Curl::getRequestHeaders() Curl::getResponse() Curl::getResponseCookie($clave) Curl::getResponseCookies() Curl::getResponseHeaders() Curl::getRetries() Curl::getRetryDecider() Curl::getSuccessCallback() Curl::getUrl() Curl::getUserSetOptions() Curl::getXmlDecoder() Curl::cabeza($url, $datos = []) Curl::isChildOfMultiCurl() Curl::isCurlError() Curl::isError() Curl::isHttpError() Curl::opciones($url, $datos = []) Curl::parche($url, $datos = []) Curl::post($url, $datos = '', $follow_303_with_post = false) Curl::progreso($devolución de llamada) Curl::put($url, $datos = []) Curl::eliminarEncabezado($clave) Curl::restablecer() Curl::búsqueda($url, $datos = []) Curl::setAutoReferer($auto_referer = verdadero) Curl::setAutoReferrer($auto_referrer = verdadero) Curl::setBasicAuthentication($nombre de usuario, $contraseña = '') Curl::setConnectTimeout($segundos) Curl::setCookie($clave, $valor) Curl::setCookieFile($cookie_file) Curl::setCookieJar($cookie_jar) Curl::setCookieString($cadena) Curl::setCookies($cookies) Curl::setDefaultDecoder($mixto = 'json') Curl::setDefaultHeaderOut() Curl::setDefaultJsonDecoder() Curl::setDefaultTimeout() Curl::setDefaultUserAgent() Curl::setDefaultXmlDecoder() Curl::setDigestAuthentication($nombre de usuario, $contraseña = '') Curl::setFile($archivo) Curl::setFollowLocation($follow_location = verdadero) Curl::setForbidReuse($forbid_reuse = verdadero) Curl::setHeader($clave, $valor) Curl::setHeaders($encabezados) Curl::setInterface($interfaz) Curl::setJsonDecoder($mixto) Curl::setMaxFilesize($bytes) Curl::setMaximumRedirects($maximum_redirects) Curl::setOpt($opción, $valor) Curl::setOpts($opciones) Curl::setPort($puerto) Curl::setProtocols($protocolos) Curl::setProxy($proxy, $puerto = nulo, $nombre de usuario = nulo, $contraseña = nulo) Curl::setProxyAuth($auth) Curl::setProxyTunnel($túnel = verdadero) Curl::setProxyType($tipo) Curl::setRange($rango) Curl::setRedirectProtocols($redirect_protocols) Curl::setReferer($referidor) Curl::setReferrer($referrer) Curl::setRetry($mixto) Curl::setStop($devolución de llamada = nulo) Curl::setTimeout($segundos) Curl::setUrl($url, $datos_mixtos = '') Curl::setUserAgent($user_agent) Curl::setXmlDecoder($mixto) Curl::detener() Curl::éxito($devolución de llamada) Curl::unsetHeader($clave) Curl::unsetProxy() Curl::detallado($on = verdadero, $salida = 'STDERR') MultiCurl::__construct($base_url = nulo) MultiCurl::__destruct() MultiCurl::addCurl(Curl $curl) MultiCurl::addDelete($url, $query_parameters = [], $datos = []) MultiCurl::addDownload($url, $nombre_archivo_mixto) MultiCurl::addGet($url, $datos = []) MultiCurl::addHead($url, $datos = []) MultiCurl::addOptions($url, $datos = []) MultiCurl::addPatch($url, $datos = []) MultiCurl::addPost($url, $datos = '', $follow_303_with_post = false) MultiCurl::addPut($url, $datos = []) MultiCurl::addSearch($url, $datos = []) MultiCurl::después de enviar($devolución de llamada) MultiCurl::antes de enviar($devolución de llamada) MultiCurl::cerrar() MultiCurl::completo($devolución de llamada) MultiCurl::disableTimeout() MultiCurl::error($devolución de llamada) MultiCurl::getActiveCurls() MultiCurl::getOpt($opción) MultiCurl::removeHeader($clave) MultiCurl::setAutoReferer($auto_referer = verdadero) MultiCurl::setAutoReferrer($auto_referrer = verdadero) MultiCurl::setBasicAuthentication($nombre de usuario, $contraseña = '') MultiCurl::setConcurrency($concurrencia) MultiCurl::setConnectTimeout($segundos) MultiCurl::setCookie($clave, $valor) MultiCurl::setCookieFile($cookie_file) MultiCurl::setCookieJar($cookie_jar) MultiCurl::setCookieString($cadena) MultiCurl::setCookies($cookies) MultiCurl::setDigestAuthentication($nombre de usuario, $contraseña = '') MultiCurl::setFile($archivo) MultiCurl::setFollowLocation($follow_location = verdadero) MultiCurl::setForbidReuse($forbid_reuse = verdadero) MultiCurl::setHeader($clave, $valor) MultiCurl::setHeaders($encabezados) MultiCurl::setInterface($interfaz) MultiCurl::setJsonDecoder($mixto) MultiCurl::setMaximumRedirects($maximum_redirects) MultiCurl::setOpt($opción, $valor) MultiCurl::setOpts($opciones) MultiCurl::setPort($puerto) MultiCurl::setProxies($proxies) MultiCurl::setProxy($proxy, $puerto = nulo, $nombre de usuario = nulo, $contraseña = nulo) MultiCurl::setProxyAuth($auth) MultiCurl::setProxyTunnel($túnel = verdadero) MultiCurl::setProxyType($tipo) MultiCurl::setRange($rango) MultiCurl::setRateLimit($rate_limit) MultiCurl::setReferer($referente) MultiCurl::setReferrer($referrer) MultiCurl::setRequestTimeAccuracy() MultiCurl::setRetry($mixto) MultiCurl::setTimeout($segundos) MultiCurl::setUrl($url, $datos_mixtos = '') MultiCurl::setUserAgent($user_agent) MultiCurl::setXmlDecoder($mixto) MultiCurl::inicio() MultiCurl::detener() MultiCurl::éxito($devolución de llamada) MultiCurl::unsetHeader($clave) MultiCurl::unsetProxy() MultiCurl::detallado($on = verdadero, $salida = 'STDERR')
Consulte SEGURIDAD para conocer consideraciones de seguridad.
Consulte SOLUCIÓN DE PROBLEMAS para obtener ayuda para solucionar problemas.
Consulte PRUEBAS para obtener información sobre las pruebas.
Busque problemas abiertos o abra un nuevo problema para iniciar una discusión sobre un error o característica.
Bifurca el repositorio en GitHub para comenzar a realizar cambios.
Escriba una o más pruebas para la nueva característica o que expongan el error.
Realice cambios en el código para implementar la función o corregir el error.
Envíe una solicitud de extracción para fusionar y publicar sus cambios.