initphp / curl
Curl 库
Requires
- php: >=7.4
- ext-curl: *
README
Curl 库可以帮助您使用 PHP 进行高级 HTTP 请求。
要求
- PHP 7.4 或更高版本
- PHP Curl 扩展
安装
composer require initphp/curl
用法
require_once "vendor/autoload.php"; use \InitPHP\Curl\Curl; $curl = new Curl(); $curl->setUrl("https://example.com"); $curl->handler(); $res = $this->getResponse(); if(!empty($curl->getError())){ die($curl->getError()); } echo $res['body'];
此库可以作为您的 API 服务 HTTP 客户端使用。示例
require_once "vendor/autoload.php"; use \InitPHP\Curl\Curl; $curl = Curl::client('PUT', 'http://api.service.example.com/update/1') $curl->setVersion("1.1") // HTTP Version ->setHeader("Content-Type", "application/json") ->setBody(json_encode([ 'username' => 'admin', 'password' => '12345', ])) ->handler(); if(!empty($curl->getError())){ die($curl->getError()); } switch ($curl->getResponse('code')) { case 200 : case 201 : // Success break; case 404 : // Not Found break; case 400: // Badrequest break; // ... }
方法
client()
创建一个新的客户端对象。
public static function client(string $method, string $url): \InitPHP\Curl\Curl;
getResponse()
返回 curl 操作的结果。
public function getResponse(null|string $key = null): null|mixed;
以下将解释可用的 $key 参数值及其说明。
NULL: 返回包含所有响应信息的关联数组。"status": 返回 HTTP 响应的状态行信息。"code": 返回 HTTP 响应代码。"version": 返回 HTTP 响应版本信息。"headers": 返回 HTTP 响应的头部信息作为数组。"body": 返回 HTTP 响应的主体。
setUrl()
为 cURL 定义 URL 信息。
public function setUrl(string $url): self
如果不是有效的 URL,则抛出 \InvalidArgumentException。
setHeader()
为请求添加头部。
public function setHeader(string $name, string $value): self
示例
/** @var \InitPHP\Curl\Curl $curl */ $curl->setHeader('Content-type', 'application/json; charset=utf8');
setHeaders()
对于请求;通过关联数组添加一个或多个头部。
public function setHeaders(array $headers): self
示例
/** @var \InitPHP\Curl\Curl $curl */ $curl->setHeaders([ 'Content-type' => 'application/json; charset=utf8' ]);
setMethod()
定义 HTTP 请求方法。
public function setMethod(string $method = 'GET'): self
$method 参数可以取以下值;
- GET, POST, PUT, HEAD, DELETE, PATCH, OPTIONS
setBody()
HTTP 请求用于手动定义内容信息。
public function setBody(string $body): self
setVersion()
定义 HTTP 请求的 HTTP 版本。
public function setVersion(string $httpVersion = '1.1'): self
$httpVersion 参数可以取以下值;
1.01.12.0(需要 libcurl v7.33 或更高版本)
setUserAgent()
定义在 cURL 过程中报告给服务器的用户代理信息。
public function setUserAgent(null|string $userAgent = null): self
示例
/** @var \InitPHP\Curl\Curl $curl */ $curl->setUserAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0");
setReferer()
定义要报告给服务器的 HTTP 引用信息。
public function setReferer(null|string $referer = null): self
setAllowRedirect()
定义是否遵循重定向。如果没有使用此方法,则不会遵循重定向。
public function setAllowRedirect(int $maxRedirect = 3): self
setTimeout()
定义请求的等待时间限制(秒或毫秒)。
public function setTimeout(int $timeout = 0, bool $isMicrosecond = false): self
如果 $isMicrosecond 为 FALSE,则使用该值作为秒。
setField()
定义要作为 POST 发送的数据。
public function setField(string $key, string $value): self
setFields()
它定义了通过 POST 发送的数据,使用关联数组。
public function setFields(array $fields) : self
setSSL()
定义 cURL 请求的 SSL 配置。
public function setSSL(int $host = 2, int $verify = 1, null|int $version = null): self
setProxy()
定义 cURL 使用的代理。
public function setProxy($proxy): self
setUpload()
它将文件发送到服务器。
public function setUpload(string $name, \CURLFile $file): self
示例(单个)
/** @var \InitPHP\Curl\Curl $curl */ $curl->setUpload("upload_file", new \CURLFile(__DIR__ . 'image.jpg')); // $_FILES["upload_file"]
示例(多个)
/** @var \InitPHP\Curl\Curl $curl */ $curl->setUpload("upload_file[0]", new \CURLFile(__DIR__ . 'image-1.jpg')); $curl->setUpload("upload_file[1]", new \CURLFile(__DIR__ . 'image-2.jpg'));
getInfo()
它是本库中的 curl_getinfo() 函数。
public function getInfo(null|string $key = null): null|mixed
getError()
它是本库中的 curl_error() 函数。
public function getError(): null|string
setOpt()
它是本库中的 curl_setopt() 函数。
public function setOpt(int $key, mixed $value): self
setOptions()
它是本库中的 curl_setopt_array() 函数。
public function setOptions(array $options): self
handler()
cURL 启动并执行。
public function handler(): bool
save()
cURL 处理后,将内容写入指定的文件。
public function save(string $filePath): false|int
成功时返回写入的字节数。
示例
/** @var \InitPHP\Curl\Curl $curl */ $curl = new \InitPHP\Curl\Curl(); $curl->setUrl("http://example.com") ->handler(); if($curl->save(__DIR__ . '/example.html') === FALSE){ echo "The file could not be written."; }
setCookie()
定义要随 cURL 发送的 cookie。
public function setCookie(string $name, string|int|float $value): self
示例
/** @var \InitPHP\Curl\Curl $curl */ $curl->setCookie('username', 'admin') // $_COOKIE['username'] ->setCookie('mail', 'admin@example.com'); // $_COOKIE['mail']
setCookies()
通过关联数组定义多个 cookie。
public function setCookies(array $cookies): self
示例
/** @var \InitPHP\Curl\Curl $curl */ $curl->setCookies([ 'username' => 'admin', // $_COOKIE['username'] 'mail' => 'admin@example.com' // $_COOKIE['mail'] ]);
setCookieJarFile()
它告诉存储要发送到服务器的 cookie 值的文件路径。
public function setCookieJarFile(string $filePath): self
如果指定的文件存在,则从文件中读取cookie并发送到服务器。 CURLOPT_COOKIEFILE
如果指定的文件不存在,则将来自服务器的cookie写入文件。 CURLOPT_COOKIEJAR
示例
$login = new \InitPHP\Curl\Curl(); $login->setUrl("http://example.com/user/login") ->setField('username', 'admin') ->setField('password', '123456') ->setMethod('POST') ->setCookieJarFile(__DIR__ . '/session.txt') ->handler(); $dashboard = new \InitPHP\Curl\Curl(); $dashboard->setUrl("http://example.com/user/dashboard") ->setCookieJarFile(__DIR__ . '/session.txt') ->handler();
致谢
许可
版权所有 © 2022 MIT许可