下面是关于 "phpcurl获取https请求的2种方法" 的完整攻略。
一、前言
一般情况下在PHP中执行HTTP请求都是很简单的,但如果需要使用HTTPS请求,由于需要验证证书使用,过程就显得更为复杂了。
本文将详细讲解如何使用 PHP cURL获取 HTTPS 请求的两种方法及其原理,以及如何解决验证证书的问题。
二、curl_setopt 方法
curl_setopt 是使用 PHP cURL 发送 HTTPS 请求的基本方法。下面是伪代码,用它可以获取 HTTPS 请求。
// 初始化 scurl
$scurl = curl_init();
// 设置 URL 和其它选项
curl_setopt($scurl, CURLOPT_URL, "https://www.example.com");
// HTTPS 站点的证书
curl_setopt($scurl, CURLOPT_CAINFO,"/path/to/cacert.pem");
// 带证书访问,可以避免 CURLOPT_SSL_VERIFYHOST 的问题
curl_setopt($scurl, CURLOPT_SSLCERT,"/path/to/cert.pem");
curl_setopt($scurl, CURLOPT_SSLKEY,"/path/to/key");
// 跟踪重定向跳转到其它站点
curl_setopt($scurl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($scurl, CURLOPT_RETURNTRANSFER, true);
// 发出请求
$result = curl_exec ($scurl);
// 关闭 scurl
curl_close ($scurl);
如果您使用的站点使用的是自签证书,请注意开启以下选项。
curl_setopt($scurl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($scurl, CURLOPT_SSL_VERIFYPEER, 0);
这些选项仅为在调试过程中使用,默认情况下应根据 HTTPS 站点的实际证书设置。
三、使用 GuzzleHttp 方法
GuzzleHttp 是一个 PHP HTTP 请求库,其中包含了更多高级功能,如异步请求等。下面将介绍如何使用 GuzzleHttp 获取 HTTPS 请求。
首先,我们需要安装 GuzzleHttp。使用 composer 命令即可轻松安装。
composer require guzzlehttp/guzzle:^7.0
接下来,示例代码如下:
// GuzzleHttp 编写的在获取 HTTPS 请求之前必须进行安装
require_once dirname(__FILE__) . "/vendor/autoload.php";
// GuzzleHttp 请求客户端
$client = new GuzzleHttp\Client(['base_uri' => 'https://www.example.com']);
// 发出请求
$response = $client->request('GET', '/');
// 获得响应结果
$result = $response->getBody()->getContents();
与 curl_setopt 方法相比,GuzzleHttp 更容易学习并且不需要担心许多细节,所以它应该成为 PHP 程序员的首选。
四、结语
以上是本文介绍的如何使用 PHP cURL 来获取 HTTPS 请求的两种方法,其中具体内容已经包括基本代码。值得注意的是,如果您的请求对象是不同的,或者您的请求需要额外的验证或授权,这可能不是您最后使用的代码。
最后,一定要确保您的 HTTPS 站点真实有效。如果您自信够胆大、重视您的用户(也重视自己的头脑健康),请仔细验证您的 HTTPS 证书!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php curl 获取https请求的2种方法 - Python技术站