PHP HTTP 客户端 - Guzzle

简介

Guzzle是PHP中的一个独立HTTP客户端。可以通过composer来安装,composer.json文件内容如下所示:

{ 
    "name":"jd/guzzle demo", 
    "authors":[ 
        { 
            "name":"Eddy", 
            "email":"eddy@rrgod.com" 
        } 
    ], 
    "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'); 
日志记录
在开发需要用到三方网络服务的应用程序时,网络问题经常出现,因此记录程序访问日志是非常重要的。Guzzle提供了不少插件来实现日志记录功能,本例中以 monolog为例。
修改我们的composer.json文件,require部分添加如下一行:
"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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值