PHP HTTP 客户端 - Guzzle

Eddy 发布于2014-1-16 10:34:57 分类: 技术心得 已浏览loading 网友评论0条 我要评论

[FONT-SIZE=3]简介[/FONT-SIZE]

Guzzle是PHP中的一个独立HTTP客户端。可以通过composer来安装,composer.json文件内容如下所示:
[CODE=php]
{
"name":"jd/guzzle demo",
"authors":[
{
"name":"Eddy",
"email":"eddy@rrgod.com"
}
],
"require":{
"guzzle/guzzle":"~3.7"
}
}
[/CODE]
保存文件,运行composer install命令,Guzzle库安装完成,OK~

[FONT-SIZE=3]入门基础[/FONT-SIZE]

[CODE=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;

[/CODE]
实例化一个Client,构造函数的参数是我们要访问的地址。随后调用Client的get方法发送get请求,当然也可以调用post等其它http方法发送http请求,并返回一个Request对象。紧接着调用Request对象的send方法发送请求并返回一个response对象。最后,我们调用response对象的getBody方法接收请求结果。

[FONT-SIZE=5]处理路径和URL参数[/FONT-SIZE]

上面的代码例子请求路径和参数是直接放在url中的,我们也可以自己构造对应的参数,代码如下所示:
[CODE=php]
$request = $client->createRequest();
$request->setPath('/API/jsonI.php');
$request->getQuery()->
set('length',10)
->set('type','uint8');
[/CODE]
[FONT-SIZE=3]日志记录[/FONT-SIZE]
在开发需要用到三方网络服务的应用程序时,网络问题经常出现,因此记录程序访问日志是非常重要的。Guzzle提供了不少插件来实现日志记录功能,本例中以monolog为例。
修改我们的composer.json文件,require部分添加如下一行:
[CODE=php]
"monolog/monolog": "1.6.0"
[/CODE]
运行composer update命令,安装monolog。修改下我们的代码,以此来让Guzzle来用monolog来记录我们的请求和返回日志信息。
[CODE=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;
?>
[/CODE]

[FONT-SIZE=3]参考[/FONT-SIZE]

Guzzle文档
Guzzle GitHub

已经有(0)位网友发表了评论,你也评一评吧!
原创文章如转载,请注明:转载自Eddy Blog
原文地址:http://www.rrgod.com/technique/895.html     欢迎订阅Eddy Blog

记住我的信息,下次不用再输入 欢迎给Eddy Blog留言