PHP HTTP 客户端 - Guzzle

简介

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'); 
日志记录
在开发需要用到三方网络服务的应用程序时,网络问题经常出现,因此记录程序访问日志是非常重要的。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

你可能感兴趣的:(PHP,http)