casivaagustin / phrequests
Curl 封装器,使 Http 请求变得容易
Requires
- php: >=5.3.1
This package is not auto-updated.
Last update: 2024-09-20 21:06:03 UTC
README
PHRequests 是一个使用 Curl 进行 HTTP 请求的 API。
读作 Free-Quests(由 @mgi1982 提出的原始想法)
为什么使用 PHRequests ?
- 它基于 Curl 构建。
- 通过使 CURL 真正可用来简化你的生活。
- 受 Python 的 Requests API 启发,这试图成为 PHP 的端口 https://github.com/kennethreitz/requests/
用法
如果你需要使用 Curl 向某个 URL 发送请求以获取内容,经典代码将如下所示。
$ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); curl_setopt($ch, CURLOPT_MAXREDIRS, 3); curl_setopt($ch, CURLOPT_URL, 'http://www.google.com'); $result = curl_exec($ch); if (curl_errno($ch) > 0) { //Handle Error } curl_close($ch);
PHRequests 将所有这些糟糕的代码封装起来,使我们的生活更简单。
为了进行 GET 请求,你应该这样做
$response = \PHRequests\PHRequests::get('http://www.google.com');
是的,就这么简单。看起来不错,看看 POST 请求。
要创建 POST,你可以这样做
$opt = array ( 'param1' => 'Some Value', 'param2' => 'Some other value', ); $response = \PHRequests\PHRequests::post('http://www.httpbin.org/post', $opt);
就这样了!
响应对象将包含请求的结果。它还具有请求的许多重要数据。
- $response->content : 请求的内容
- $response->headers : 响应头
- $response->status_code : 响应代码
等等。
PHRequests 使用 PSR-0 标准进行类自动加载,因此您需要一个兼容的自定义自动加载函数才能自行开始使用(而不是在兼容的框架如 Symfony 内部)。您可以在 Tests\bootstrap.php 文件中找到一个这样的函数。
要查看更多示例,请检查测试(直到我编写更多文档)。
代理支持
如果您在代理后面,您需要定义代理的 URL 以便进行请求。以下是一个示例。
$options = array( 'proxy' => array( 'url' => 'http://prx_name_or_ip:3128' ), ); $response = \PHRequests\PHRequests::options(BASE_GET_URL, $options);
如果您的代理使用身份验证,请尝试使用此方法
$options = array( 'proxy' => array( 'url' => 'http://prx_name_or_ip:3128', 'auth' => 'username:password', 'auth_method' => Auth::BASIC //Optional, BASIC By default, NTLM is the second option. ), ); $response = \PHRequests\PHRequests::options(BASE_GET_URL, $options);
HTTPS 支持
为了对有效的 HTTPS 服务器进行 HTTPs 请求,您需要下载并保存站点的证书,将其保存到可访问的文件夹中。然后,您需要使用证书的完整路径定义选项 ssl_ca 以设置 PHRequest。以下是一个示例。
$options = array ( 'ssl_ca' => '../certs/mycert.pem'; ) $response = PHRequests::get('https://www.mysite.com', $options);
如果您未设置 PEM 证书,HTTPs 请求仍将被发送,但不会进行适当的证书验证,连接仍将是 SSL 连接,但可能存在安全问题,接受未经验证的任何证书。
重要提示:证书必须是 PEM 证书。
有关 HTTPS 的更多详细说明,请参阅以下内容。
http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/
将远程文件保存在本地
要获取远程文件并将其保存在本地,您可以这样做。
\PHRequests\PHRequests::saveRemoteFile($urlSource, $pathDest, $options);
位于 $urlSource 的文件将使用 $options 保存到 $pathDest。
请求将以 GET 方法进行。
重要提示:此功能的错误使用可能会引起安全问题,请记住这一点并小心行事。
支持的方法。
- GET
- POST
- PUT
- DELETE
- HEAD
- OPTIONS
待办事项
- 会话支持
- cookies 支持
- 身份验证机制
如何运行测试
首先安装 phpunit,我使用的是 PHPUnit 4.7.3,并使用 phar 文件安装。
转到测试文件夹,然后运行
phpunit .
这将运行所有测试。
我在编写一个良好的公共测试以测试代理功能时遇到了麻烦,需要一个公开和公共的代理来验证它是否工作,这就是为什么该测试被禁用的原因。
如果您将要使用代理功能,请设置代理,启用测试并在提交前进行测试。
支持
如果您需要特殊功能或发现任何错误,请告诉我。
如果您想要为项目做出贡献,也请告诉我 :)