通过使用 Symfony Panther,我发送了一个请求并希望获得响应。我能够获取正文和状态代码,但对于 header 我只得到一个空数组。
$client = Client::createChromeClient();
$client->request('GET', 'https://google.com');
$client->getInternalResponse()->getHeaders(); // returned empty array!!!
最佳答案
Panther 无法访问 HTTP 响应,如本 github 问题 https://github.com/symfony/panther/issues/17 中所述。 .
但是如果你仔细阅读,你会发现这不是 Panther 的限制,而是 Selenium WebDriver 的限制。看这篇文章How to get HTTP Response Code using Selenium WebDriver .
这意味着“我可以使用 Symfony Panther 访问 HTTP 响应代码或 HTTP header 吗?”这个问题的答案。是“不,这是不可能的”。
虽然这是不可能的,但我发现的解决方法是创建一个 HttpClient
并使用它来发出请求并从中获取响应。
<?php
use Symfony\Component\HttpClient\HttpClient;
$client = HttpClient::create();
$response = $client->request('GET', $this->myBaseUri);
$statusCode = $response->getStatusCode();
$headers = $response->getHeaders();
这是 HTTP Client (Symfony Docs) 的文档如果你想尝试这种方式。
关于php - Symfony Panther 中 getInternalResponse 的 getHeader 始终返回空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66525366/