请问如何监听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 请求,无法通过监听那个事件得到结果,也就是没有触发那个事件,现在很困扰,不知道该如何才能监听到。
推荐文章: