在请求发生后,如何从 Guzzle 请求/客户端检索 cookie?
$client = new Client([
'base_uri' => 'www.google.com',
]);
$response = $client->request('GET', '/');
阅读文档。您必须使用
CookieJar
类来处理 cookie。
$client = new \GuzzleHttp\Client(['cookies' => true]);
$r = $client->request('GET', 'http://httpbin.org/cookies');
$cookieJar = $client->getConfig('cookies');
$cookieJar->toArray();
刚刚更新这篇文章。
在 Guzzle 8.0 版本中,
getConfig()
方法将为 @deprecated
。 阅读文档。
您可以从示例代码中获取cookie:
$client = new Client([
'base_uri' => 'YOUR_URI',
]);
$response = $client->post('PATH');
$headerSetCookies = $response->getHeader('Set-Cookie');
$cookies = [];
foreach ($headerSetCookies as $key => $header) {
$cookie = SetCookie::fromString($header);
$cookie->setDomain('YOUR_DOMAIN');
$cookies[] = $cookie;
}
$cookieJar = new CookieJar(false, $cookies);
使用的话:
$client->post('PATH', [
'cookies' => $cookieJar
]);
使用 Guzzle v7,您可以使用这个:
$jar = new \GuzzleHttp\Cookie\SessionCookieJar('session');
(new \GuzzleHttp\Client())->get('https://www.google.com', ['cookies' => $jar]);
var_dump($jar);
文档在这里 或者,如果您不希望 cookie 持续存在,您可以使用
CookieJar
。