gpt4 book ai didi

symfony - Guzzle php http 客户端 cookies 设置

转载 作者:行者123 更新时间:2023-12-02 17:11:36 25 4
gpt4 key购买 nike

我正在尝试从 Zend Http 客户端迁移到 Guzzle Http 客户端。我发现 Guzzle 功能齐全且在大多数情况下易于使用,但我认为在使用 Cookie 插件时它没有很好的文档记录。所以我的问题是如何在 Guzzle 中为要向服务器发出的 HTTP 请求设置 cookie。

使用 Zend Client,您可以做一些简单的事情:

$client = new HttpClient($url);   // Zend\Http\Client http client object instantiation
$cookies = $request->cookies->all(); // $request Symfony request object that gets all the cookies, as array name-value pairs, that are set on the end client (browser)
$client->setCookies($cookies); // we use the above client side cookies to set them on the HttpClient object and,
$client->send(); //finally make request to the server at $url that receives the cookie data

那么,如何在 Guzzle 中执行此操作。我看过http://guzzlephp.org/guide/plugins.html#cookie-session-plugin 。但我觉得这并不简单,我无法理解它。也许有人可以帮忙??

最佳答案

这段代码应该实现所要求的,即在发出 guzzle 客户端请求之前在请求上设置 cookie

$cookieJar = new ArrayCookieJar();  // new jar instance
$cookies = $request->cookies->all(); // get cookies from symfony symfony Request instance
foreach($cookies as $name=>$value) { //create cookie object and add to jar
$cookieJar->add(new Cookie(array('name'=>$name, 'value'=>$value)));
}

$client = new HttpClient("http://yourhosturl");
$cookiePlugin = new CookiePlugin($cookieJar);

// Add the cookie plugin to the client object
$client->addSubscriber($cookiePlugin);

$gRequest = $client->get('/your/path');

$gResponse = $gRequest->send(); // finally, send the client request

当服务器返回带有 set-cookie header 的响应时,您可以在 $cookieJar 中使用这些 cookie。

Cookie jar 也可以从 CookiePlugin 方法获取

$cookiePlugin->getCookieJar();

关于symfony - Guzzle php http 客户端 cookies 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12062759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com