samuraee / easycurl
PHP cURL 扩展的超级简单和灵活的包装类
v1.0.1
2021-04-02 13:07 UTC
Requires
- php: >=7.0
- ext-curl: *
README
PHP 7.0+ cURL 扩展的超级简单和灵活的包装类
有关 PHP 的 libcurl 扩展的更多信息,请参阅 php.net/curl。
这是一个相当简单的库,如果您需要更强大的功能,请查看 Guzzle。
安装
通过 Composer(推荐)
composer require samuraee/easycurl '~1.0'
通过下载
只需获取 最新版本。
使用方法
初始化
try { $curl = new \Samuraee\EasyCurl(); } catch (Exception $e) { echo $e->getMessage(); }
执行请求
EasyCurl 对象支持 5 种请求类型:HEAD、GET、POST、PUT 和 DELETE。您必须指定一个请求的 URL,并可选地指定一个关联数组或查询字符串变量,以便与其一起发送。
$response = $curl->head($url, $params); $response = $curl->get($url, $params); $response = $curl->post($url, $params); $response = $curl->put($url, $params); $response = $curl->delete($url, $params);
要使用自定义请求方法,您可以调用 request
方法
$response = $curl->request($url, 'ANY_CUSTOM_REQUEST_TYPE', $params);
示例
$response = $curl->get('google.com?q=test'); $response = $curl->get('google.com?q=test', array('some_variable' => 'some_value')); // EasyCurl will append '&some_variable=some_value' to the url $response = $curl->post('test.com/posts', array('title' => 'Test', 'body' => 'This is a test'));
所有请求都返回未处理的响应体,或者在发生错误时抛出 EasyCurlException。
使用原始有效载荷执行 POST/PUT 请求
有时您需要发送未编码的 POST 参数,而是发送原始 JSON 或其他原始数据格式。
$response = $curl->rawPost($url, $jsonData); $response = $curl->rawPut($url, 'raw random data');
请注意,数据以原始形式发送,不进行任何 URL 编码操作。请记住这一点。
您可能还需要更改请求类型的内容类型头
$curl->addHeader('Content-Type', 'text/plain'); // or $curl->addHeader('Content-Type', 'application/json'); // and then $response = $curl->rawPost($url, $jsonData);
这取决于您与之合作的 API 服务器端。
获取有关已发送请求的额外信息
$info = $curl->getTransferInfo();
这将返回包含以下键的关联数组
url
- 最后有效的 URLcontent_type
- 下载对象的 Content-Type,NULL 表示服务器未发送有效的 Content-Type: 头http_code
- 最后接收到的 HTTP 状态码header_size
- 接收到的所有头的总大小request_size
- 发出的请求的总大小,目前仅适用于 HTTP 请求filetime
- 获取的文档的远程时间,如果返回 -1,则表示文档的时间未知ssl_verify_result
- 通过设置 CURLOPT_SSL_VERIFYPEER 请求的 SSL 认证验证结果redirect_count
- 如果设置了 CURLOPT_FOLLOWLOCATION,则通过的重定向次数total_time
- 最后传输的会话的总交易时间(以秒为单位)namelookup_time
- 域名解析完成的时间(以秒为单位)connect_time
- 建立连接所需的时间(以秒为单位)pretransfer_time
- 从开始到文件传输开始之前的时间(以秒为单位)size_upload
- 上传的字节总数size_download
- 下载的字节总数speed_download
- 平均下载速度speed_upload
- 平均上传速度download_content_length
- 下载的 content-length,从 Content-Length: 字段读取upload_content_length
- 指定的上传大小starttransfer_time
- 从开始到第一个字节即将传输的时间(以秒为单位)redirect_time
- 开始最终交易之前所有重定向步骤的时间(以秒为单位)certinfo
- 此字段尚未提供官方描述request_header
- 发送的请求字符串。为了使其生效,请添加CURLINFO_HEADER_OUT选项
您也可以轻松地获取此数组的任何单个元素
$httpCode = $curl->getTransferInfo('http_code');
Cookie会话
要跨请求和启用cookie支持维护会话,您必须设置存储cookie的文件名
$curl->setCookieFile('some_file_name.txt');
此文件必须是可写的,否则将抛出EasyCurlException。
基本配置选项
您可以轻松设置引用者、用户代理、超时以及是否遵循重定向
$curl->setReferer('http://google.com'); $curl->setUserAgent('some user agent string'); $curl->setTimeout(15); // seconds $curl->setFollowRedirects(true); // to follow redirects
HTTP基本认证
您可以为HTTP基本认证设置用户名和密码
$curl->setAuthType(); $curl->setAuthCredentials('username', 'password');
设置自定义头
您可以将自定义头设置为与请求一起发送
$curl->addHeader('Host', '98.52.78.243'); $curl->addHeader('Some-Custom-Header', 'Some Custom Value');
或使用单个数组
$curl->addHeader(array('Host'=>'98.52.78.243', 'Some-Custom-Header'=>'Some Custom Value'));
设置自定义cURL选项
您可以设置/覆盖任何cURL选项(有关它们的列表,请参阅curl_setopt文档)
$curl->addOption(CURLOPT_AUTOREFERER, true);
贡献
- 分叉它
- 创建您的功能分支(
git checkout -b my-new-feature
) - 提交您的更改(
git commit -am '添加一些功能'
) - 推送到分支(
git push origin my-new-feature
) - 创建新的Pull Request