Guzzle是一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。

  • 接口简单:构建查询语句、POST请求、分流上传下载大文件、使用HTTP cookies、上传JSON数据等等。
  • 发送同步或异步的请求均使用相同的接口。
  • 使用PSR-7接口来请求、响应、分流,允许你使用其他兼容的PSR-7类库与Guzzle共同开发。
  • 抽象了底层的HTTP传输,允许你改变环境以及其他的代码,如:对cURL与PHP的流或socket并非重度依赖,非阻塞事件循环。
  • 中间件系统允许你创建构成客户端行为。

文档参考地址:
https://guzzle-cn.readthedocs...
使用composer下载后目录结构如下:
QQ截图20200305100021.png
简单的代码示例:

<?php
require 'vendor/autoload.php';
use GuzzleHttp\Client;
//https需开启php_openssl扩展
$client = new GuzzleHttp\Client([
    'base_uri' => 'http://ip.taobao.com/service/getIpInfo.php',
    'timeout'  => 3.0
]);
$response = $client->request('GET', 'http://ip.taobao.com/service/getIpInfo.php',[
     'query' => [ 'ip' => '202.108.31.224' ]
]);

$body = $response->getBody();
$remainingBytes = $body->getContents();
echo $remainingBytes;

若出现错误如下:
Fatal error: Uncaught GuzzleHttp\Exception\RequestException: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/... in xxx.php
其原因是由于本地的CURL的SSL证书太旧了,导致不识别此证书。
解决方法如下:
http://curl.haxx.se/ca/cacert... 下载一个最新的证书。然后保存到一个任意目录,以Debian 9.X为例,我将证书文件保存到/etc/ssl/certs/cacert.pem,然后编辑php.ini,找到curl.cainfo,去掉curl.cainfo前面的注释“;”,然后在后面写上cacert.pem证书的完整路径及文件名,我的如下:
curl.cainfo = "/etc/ssl/certs/cacert.pem"
1
curl.cainfo = "/etc/ssl/certs/cacert.pem"
重启PHP服务,问题解决。(参考https://www.quyu.net/info/170...


如若时光萧瑟去丶
111 声望9 粉丝

weakChickenPeng.