casivaagustin/phrequests

Curl 封装器,使 Http 请求变得容易

v1.0.1 2016-03-14 21:05 UTC

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 向某个 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 .

这将运行所有测试。

我在编写一个良好的公共测试以测试代理功能时遇到了麻烦,需要一个公开和公共的代理来验证它是否工作,这就是为什么该测试被禁用的原因。

如果您将要使用代理功能,请设置代理,启用测试并在提交前进行测试。

支持

如果您需要特殊功能或发现任何错误,请告诉我。

如果您想要为项目做出贡献,也请告诉我 :)