php - 在 guzzle 6 中初始化后设置请求选项

标签 php guzzle

在版本 < 6 的 Guzzle 中,我曾经在客户端初始化后即时设置我的身份验证 header 。为此,我使用了 setDefaultOption()

$client = new Client(['base_url' => $url]);
$client->setDefaultOption('auth', [$username, $password]);

但是,此功能似乎在版本 6 中已弃用。我该如何处理?

注意:我需要这样做的原因是因为我将 guzzle 用于批处理请求,其中某些请求需要不同的身份验证参数。

最佳答案

Guzzle 6+ 的最佳选择是重新创建客户端。 Guzzle 的 HTTP 客户端现在是不可变的,因此无论何时您想要更改某些内容,都应该创建一个新对象。

这并不意味着您必须重新创建整个对象图,HandlerStack 和中间件可以保持不变:

use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;

$stack = HandlerStack::create();
$stack->push(Middleware::retry(/* ... */));
$stack->push(Middleware::log(/* ... */));

$client = new Client([
    'handler' => $stack,
    'base_url' => $url,
]);

// ...

$newClient = new Client([
    'handler' => $stack,
    'base_url' => $url,
    'auth' => [$username, $password]
]);

关于php - 在 guzzle 6 中初始化后设置请求选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31609936/

相关文章:

php - curl 错误 28 : Operation timed out after 2000 milliseconds with 7276200 out of 23000995 bytes received

php - 这个 ezSQL 查询有什么问题?

php - 将 PHP 数组写入文件生成二进制文件而不是纯文本

Laravel:通过 Guzzle 使用自定义 Passport 登录的解决方案

php - 为 Guzzle CookieJar 设置 cookie

php - 如何使用 DTO 在 PHP 中使用 REST API?

php - 如何从 24 个字符的字符串中获取唯一的 8 个字符的字符串?

php - 将 php 应用程序商业化?

php - Ubuntu 在终端输入 'php' 显示很多错误

php - 下载图像时处理 404 错误