Guzzle是PHP中的一个独立HTTP客户端。可以通过composer来安装,composer.json文件内容如下所示:
{
"name":"jd/guzzle demo",
"authors":[
{
"name":"Eddy",
"email":"[email protected]"
}
],
"require":{
"guzzle/guzzle":"~3.7"
}
}
保存文件,运行composer install命令,Guzzle库安装完成,OK~
入门基础
<?php require_once 'vendor/autoload.php'; use Guzzle\Http\Client; use Guzzle\Http\EntityBody; use Guzzle\Http\Message\Request; use Guzzle\Http\Message\Response; $client = new Client('http://qrng.anu.edu.au/'); $request = $client->get('/API/jsonI.php?length=10&type=uint8'); $response = $request->send(); $body = $response->getBody(true); echo $body;
实例化一个Client,构造函数的参数是我们要访问的地址。随后调用Client的get方法发送get请求,当然也可以调用post等其它http方法发送http请求,并返回一个Request对象。紧接着调用Request对象的send方法发送请求并返回一个response对象。最后,我们调用response对象的getBody方法接收请求结果。
处理路径和URL参数
上面的代码例子请求路径和参数是直接放在url中的,我们也可以自己构造对应的参数,代码如下所示:
$request = $client->createRequest();
$request->setPath('/API/jsonI.php');
$request->getQuery()->
set('length',10)
->set('type','uint8');
日志记录
"monolog/monolog": "1.6.0"
运行composer update命令,安装monolog。修改下我们的代码,以此来让Guzzle来用monolog来记录我们的请求和返回日志信息。
<?php require_once 'vendor/autoload.php'; use Guzzle\Http\Client; use Guzzle\Http\EntityBody; use Guzzle\Http\Message\Request; use Guzzle\Http\Message\Response; use Guzzle\Log\MessageFormatter; use Guzzle\Log\MonologLogAdapter; use Guzzle\Plugin\Log\LogPlugin; use Monolog\Handler\StreamHandler; use Monolog\logger; $logger = new Logger('client'); $logger->pushHandler(new StreamHandler('guzzle.log')); $logAdapter = new MonologLogAdapter($logger); $LogPlugin = new LogPlugin($logAdapter,MessageFormatter::DEBUG_FORMAT);//具体记录日志类型可参考Guzzle文档 $client = new Client('http://qrng.anu.edu.au/'); $client->addSubscriber($LogPlugin); $request = $client->get('/API/jsonI.php?length=10&type=uint8'); $response = $request->send(); $body = $response->getBody(true); echo $body; ?>
参考
Guzzle文档
Guzzle GitHub