Php Symfony HTTP客户端获取原始请求信息
我使用的是Symfony 5.2Php Symfony HTTP客户端获取原始请求信息,php,symfony,Php,Symfony,我使用的是Symfony 5.2 $response=$myApi->request($method,$url,$options); 当请求失败时,我希望获得原始请求的详细信息,即:请求头。 $response->getInfo()不返回它们(仅返回响应头)。 我的$options并不总是有我所需要的全部,因为有些可以来自客户端配置 我需要在生产中的某个地方记录,我看到了,但没有找到更多关于它的信息。 在对代码进行快速检查之后,我可以看到可以设置一个记录器,但它似乎只记录方法和URI 如何获取
$response=$myApi->request($method,$url,$options);
当请求失败时,我希望获得原始请求的详细信息,即:请求头。$response->getInfo()
不返回它们(仅返回响应头)。我的
$options
并不总是有我所需要的全部,因为有些可以来自客户端配置
我需要在生产中的某个地方记录,我看到了,但没有找到更多关于它的信息。在对代码进行快速检查之后,我可以看到可以设置一个记录器,但它似乎只记录方法和URI 如何获取请求信息,如标题或参数/正文?
这是我在评论中发布的一个选项的快速示例:
public function\uu构造(HttpClientInterface$client,LoggerInterface$logger)
{
$this->client=$client;
if($this->LoggerAwareInterface的客户端实例){
$this->client->setLogger($logger);
}
}
您也可以将设置记录器延迟到您的使用区域。$response->getInfo('debug')
包含客户端的请求头
dump($response->getInfo('debug'));
*找到主机myapi的捆绑包:0x7fe4c3f81580[串行]
*不能多路复用,即使我们想!
*重新使用现有连接!(#0)与主机myapi
*已连接到myapi(xxx.xxx.xxx.xxx)端口xxxx(#0)
>POST/my/uri/HTTP/1.1
主机:myapi:xxxx
内容类型:application/json
接受:*/*
授权:持有人e5vn9569-n76v9nd-v6n978-dv6n98
用户代理:Symfony HttpClient/Curl
接受编码:gzip
内容长度:202
*上传已完全发送:202字节中的202字节
*将捆绑包标记为不支持多用途
也似乎是为详细调试而设计的是否有可用的setLogger
方法?是的,NativeHttpClient
是“Logger-aware”,我刚刚检查过,我不知道如何使用它可能有两种方法。一个是绑定一个记录器yaml,老实说,这不是我最擅长的。另一种方法是使用HttpClient::create()
手动创建一个显式接口,而不是对HttpClientInterface
进行自动连接。最后,我可能会做的是,为HttpClientInterface
保留自动连线,并自动连线LoggerInterface
。然后,测试您的HttpClientInterface
对象是否也是loggerawareiinterface
的实例,这意味着该方法存在。不幸的是,我面前没有任何代码来编写示例。Thx@Chris,但是似乎没有记录任何方法和URIHmm。。。我现在明白了,这很糟糕,NativeHttpClient
也是最终结果。响应对象上的getInfo('debug')
是否足够?我没有时间进行测试,但似乎它可能会起作用。它已经合并到我正在使用的版本中,并且只包含响应标题。实际上,一旦客户端接收到响应标题,它就会包含它们,我没有等足够的时间