Guzzle是一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。
- 接口简单:构建查询语句、POST请求、分流上传下载大文件、使用HTTP cookies、上传JSON数据等等。
- 发送同步或异步的请求均使用相同的接口。
- 使用PSR-7接口来请求、响应、分流,允许你使用其他兼容的PSR-7类库与Guzzle共同开发。
- 抽象了底层的HTTP传输,允许你改变环境以及其他的代码,如:对cURL与PHP的流或socket并非重度依赖,非阻塞事件循环。
- 中间件系统允许你创建构成客户端行为。
文档参考地址:
https://guzzle-cn.readthedocs...
使用composer下载后目录结构如下:
简单的代码示例:
<?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...)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。