请问如何监听GuzzleHttp的请求?
1. 运行环境
1). 当前使用的 Laravel 版本?
目前使用的是laravel9.33
2). 当前使用的 php/php-fpm 版本?
php使用的是8.1.19
php-fpm 版本:
3). 当前系统
4). 业务环境
5). 相关软件版本
2. 问题描述?
我在开发一个日志系统,需要捕获到项目里对外的http请求,目前项目中使用的是一个guzzlehttp的fork版本。
我本地尝试了一下,如果是通过Illuminate\Support\Facades\Http对象发起的get/post请求,那么可以通过监听laravel的Illuminate\Http\Client\Events\RequestSending事件来获取我想要的数据。
但是项目中都是通过
Http::baseUrl($this->baseUriVia())->timeout($this->timeoutVia())->setClient(new Client())获取client对象。
然后这个Client类,继承了guzzlehttpclient, class Client extends GuzzleHttpClient,在构造函数里做了一些定制化,然后parent::__construct($config)。
我发现通过这种方式发起的get/post请求,无法通过监听那个事件得到结果,也就是没有触发那个事件,现在很困扰,不知道该如何才能监听到。
推荐文章: