svyatov / curlwrapper
PHP cURL 扩展的灵活包装类
Requires
- php: >=5.3.2
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
- 最后有效的 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');
此文件必须是可写的,否则将抛出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()方法
贡献
- Fork它
- 创建您的功能分支(
git checkout -b my-new-feature
) - 提交您的更改(
git commit -am 'Added some feature'
) - 将更改推送到分支(
git push origin my-new-feature
) - 创建新的Pull Request