samuraee/easycurl

PHP cURL 扩展的超级简单和灵活的包装类

v1.0.1 2021-04-02 13:07 UTC

This package is auto-updated.

Last update: 2024-08-29 05:50:19 UTC


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 - 最后有效的 URL
  • content_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);

贡献

  1. 分叉它
  2. 创建您的功能分支(git checkout -b my-new-feature
  3. 提交您的更改(git commit -am '添加一些功能'
  4. 推送到分支(git push origin my-new-feature
  5. 创建新的Pull Request