Guzzle 的快速入门
2020-08-20 本文已影响0人
Amazing慕丶涵
一、需求
- PHP 5.5.0
- 使用PHP的流, allow_url_fopen 必须在php.ini中启用。
- 要使用cURL,你必须已经有版本cURL >= 7.19.4,并且编译了OpenSSL 与 zlib。
注解
如果没有安装cURL,Guzzle处理HTTP请求的时候不再使用cURL,而是使用PHP流处理,或者你也可以提供自己的发送HTTP请求的处理方式。
二、安装
推荐使用 https://packagist.org/
安装Guzzle,Composer是PHP的依赖管理工具,允许你在项目中声明依赖关系,并安装这些依赖。
注意:Laravel中安装方法
composer require guzzlehttp/guzzle
你可以使用composer.phar客户端将Guzzle作为依赖添加到项目:
php composer.phar require guzzlehttp/guzzle:~6.0
或者,你可以编辑项目中已存在的composer.json文件,添加Guzzle作为依赖:
{
"require": {
"guzzlehttp/guzzle": "~6.0"
}
}
安装完毕后,你需要引入Composer的自动加载文件:
require 'vendor/autoload.php';
你可以在 https://packagist.org/
发现更多关于怎样安装Composer、配置自动加载以及其他有用的东西。
三、发送请求
你可以使用Guzzle的 GuzzleHttp\ClientInterface 对象来发送请求。
创建客户端
use GuzzleHttp\Client;
$client = new Client([
// Base URI is used with relative requests
'base_uri' => 'http://httpbin.org',
// You can set any number of default request options.
'timeout' => 2.0,
]);
下面以微信小程序登录为例
// 微信小程序登录
public function wxlogin(Request $request)
{
// $appid 和 $secret 在微信小程序后台中可以查看
$appid = 'xxxxxxxxxxxxxxxxxxxx';
$secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxx';
// $code 是小程序传过来的
$code = $request->get('code');
// 请求地址
$url = "https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code";
$url = sprintf($url,$appid,$secret,$code);
// 声明请求客户端 verify 默认检查证书ssl
$client = new Client([
'timeout' => 5,
'verify' => false
]);
$response = $client->get($url);
$json = (string)$response->getBody();
// json 转化成数组
$arr = json_decode($json, true);
// 写入到数据表中
try {
Renting::create(['openid' => $arr['openid']]);
} catch (\Exception $exception) {
}
return $json;
}
注意: 'verify' => false 这个是配置在本地环境中跳过检查证书ssl,timeout为请求时间