Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony HTTP客户端获取原始请求信息_Php_Symfony - Fatal编程技术网

Php Symfony HTTP客户端获取原始请求信息

Php Symfony HTTP客户端获取原始请求信息,php,symfony,Php,Symfony,我使用的是Symfony 5.2 $response=$myApi->request($method,$url,$options); 当请求失败时,我希望获得原始请求的详细信息,即:请求头。 $response->getInfo()不返回它们(仅返回响应头)。 我的$options并不总是有我所需要的全部,因为有些可以来自客户端配置 我需要在生产中的某个地方记录,我看到了,但没有找到更多关于它的信息。 在对代码进行快速检查之后,我可以看到可以设置一个记录器,但它似乎只记录方法和URI 如何获取

我使用的是Symfony 5.2

$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')
是否足够?我没有时间进行测试,但似乎它可能会起作用。它已经合并到我正在使用的版本中,并且只包含响应标题。实际上,一旦客户端接收到响应标题,它就会包含它们,我没有等足够的时间