相关疑难解决方法(0)

GuzzleHttp:如何从POST响应中保存cookie并在下一次POST中使用它?

我正在使用Guzzle登录我的API站点,在我使用正确的凭据登录的那一刻,我得到一个带有RefreshToken的cookie,以便在下次调用时发送它,这是我的简单(并且运行良好)代码:

$client = new Client(array(
            'cookies' => true
        ));


        $response = $client->request('POST', 'http://myapi.com/login', [
            'timeout' => 30,
            'form_params' => [
                'email' => $request->get('email'),
                'password' => $request->get('password'),
            ]
        ]);
Run Code Online (Sandbox Code Playgroud)

我用cookie回复了正确的回复,我可以通过以下方式看到cookie:

$newCookies = $response->getHeader('set-cookie');
Run Code Online (Sandbox Code Playgroud)

现在,我需要在接下来的调用中使用这个cookie,我知道Guzzle可以为我保存cookie并使用"CookieJar"或"SessionCookieJar"在下次调用中自动发送(或不发送),我试过使用但是我没有看到'jar'中的cookie,这就是我所做的:

$cookieJar = new SessionCookieJar('SESSION_STORAGE', true);

        $client = new Client([
          'cookies' => $cookieJar
        ]);

        $response = $client->request ....
Run Code Online (Sandbox Code Playgroud)

但是,当我从POST中获取cookie时,我只能通过以下方式看到它:

$newCookies = $response->getHeader('set-cookie');
Run Code Online (Sandbox Code Playgroud)

并且它不在cookieJar中,因此它不会在下一次调用时发送它...我在这里缺少什么?

谢谢!

php cookies guzzle laravel-5 guzzle6

9
推荐指数
1
解决办法
5648
查看次数

Guzzle饼干处理

我正在构建一个基于Guzzle的客户端应用程序.我陷入了cookie处理的困境.我正在尝试使用Cookie插件实现它,但我无法让它工作.我的客户端应用程序是标准的Web应用程序,只要我使用相同的guzzle对象,它看起来就像它一样,但是在请求中它不会发送正确的cookie.我FileCookieJar用来存储cookie.如何在多个guzzle对象中保留cookie?

// first request with login works fine
$cookiePlugin = new CookiePlugin(new FileCookieJar('/tmp/cookie-file'));
$client->addSubscriber($cookiePlugin);

$client->post('/login');

$client->get('/test/123.php?a=b');


// second request where I expect it working, but it's not...
$cookiePlugin = new CookiePlugin(new FileCookieJar('/tmp/cookie-file'));
$client->addSubscriber($cookiePlugin);

$client->get('/another-test/456');
Run Code Online (Sandbox Code Playgroud)

php cookies rest session guzzle

5
推荐指数
2
解决办法
1万
查看次数

标签 统计

cookies ×2

guzzle ×2

php ×2

guzzle6 ×1

laravel-5 ×1

rest ×1

session ×1