GuzzleHttp请求及响应日志

前不久对接了一个海康企业安全平台,
调试时发现需要查看请求及响应日志。
上网找了很久发现可以在GuzzleHttp中加入日志

上代码

namespace app\service;

use GuzzleHttp\Client;
use GuzzleHttp\TransferStats;
use support\Log;
use support\Redis;
use support\Response;

class HikvisionBase
{
	private $app_key;
    private $app_secret;
    private $base_url;

    public $client = null;

    private $base_headers;
    private $http_method = 'POST';
    private $accept = '*/*';
    private $content_type = 'application/json';
    private $headers_no_cal = [
        'accept',
        'date',
        'host',
        'server',
        'connection',
        'content-md5',
        'content-type',
        'content-length',
        'transfer-encoding',
        'content-encoding',
        'x-application-context',
        'x-ca-signature',
        'x-ca-signature-headers',
    ];

    protected $redis_key;

    public function __construct($app_key, $app_secret, $base_url)
    {
        $this->app_key    = $app_key;
        $this->app_secret = $app_secret;
        $this->base_url   = $base_url;
        $this->redis_key  = 'dts_hikvision_access_token_' . $app_key;
        
	    if ($this->client == null) {
	        $this->client = new Client([
	            'base_uri'    => $this->base_url,
	            'verify'      => false,
	            'http_errors' => false,
	            'timeout'     => 6,
	            'on_stats'    => function(TransferStats $stats){
	                //这里可以获取到请求对象
	                $request = $stats->getRequest();
	
	                $logsContent["REQUEST"] = [
	                    "PATH" => $request->getUri()->getPath(),
	                    "METHOD" => $request->getMethod(),
	                    "QUERY" => $request->getUri()->getQuery(),
	                    "BODY" => json_decode($request->getBody(), true)
	                ];
	
	               Log::info('请求日志::', $logsContent["REQUEST"]);
	
	
	                //判断是否有正常的响应对象
	                if ($stats->hasResponse()) {
	                    //这里可以获取到响应对象
	                    $response = $stats->getResponse();
	                    $logsContent["RESPONSE"] = [
	                        "STATUS_CODE" => $response->getStatusCode(),
	                        "BODY" => json_decode($response->getBody(), true)
	                    ];
	                } else { //这里一般都是网络发生错误,常见的有CURL错误码
	                    if ($stats->getHandlerErrorData() instanceof \Exception) {
	                        $error = $stats->getHandlerErrorData()->getMessage();
	                    } else {
	                        $error = $stats->getHandlerErrorData();
	                    }
	                    $logsContent["RESPONSE"] = [
	                        "ERROR" => $error
	                    ];
	                }
	
	                Log::info('响应日志::',$logsContent["RESPONSE"]);
	            }
	        ]);
	    }
	    $this->init_base_headers();
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值