svyatov/curlwrapper

PHP cURL 扩展的灵活包装类

v1.3.0 2014-09-23 04:56 UTC

This package is not auto-updated.

Last update: 2024-09-14 16:18:44 UTC


README

PHP cURL 扩展的灵活包装类

有关 PHP 的 libcurl 扩展的更多信息,请参阅php.net/curl

这是一个相当简单的库,因此如果您需要更强大的功能,请查看Guzzle

安装

通过 Composer(推荐)

php composer.phar require svyatov/curlwrapper '~1.3'

通过下载

只需获取最新版本

用法

初始化

try {
    $curl = new CurlWrapper();
} catch (CurlWrapperException $e) {
    echo $e->getMessage();
}

执行请求

CurlWrapper 对象支持 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'));
// CurlWrapper will append '&some_variable=some_value' to the url

$response = $curl->post('test.com/posts', array('title' => 'Test', 'body' => 'This is a test'));

所有请求都返回原始响应体或如果发生错误则抛出 CurlWrapperException。

使用原始有效载荷执行 POST/PUT 请求

有时您需要发送未编码的 POST 参数,而不是原始的 JSON 或其他原始数据格式。

$response = $curl->rawPost($url, $jsonData);
$response = $curl->rawPut($url, 'raw random data');

请注意,数据以 as 发送,不进行任何 URL 编码操作。请记住这一点。

您可能还需要更改请求的 content-type 头部

$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');

此文件必须是可写的,否则将抛出CurlWrapperException异常。

基本配置选项

您可以轻松设置引用者、用户代理、超时以及是否跟随重定向

$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);

变更日志

  • v1.3.0

    新增添加了用于HTTP基本认证的setAuthType()setAuthCredentials()方法

  • v1.2.0

    新增为具有原始有效负载的POST/PUT请求添加了rawPost()rawPut()方法

    新增为快速访问cURL的CURLOPT_FOLLOWLOCATION选项添加了setFollowRedirects()方法

贡献

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