【问题标题】:Set request options after initialisation in guzzle 6在 guzzle 6 中初始化后设置请求选项
【发布时间】:2015-10-15 02:11:21
【问题描述】:

在版本 setDefaultOption()。

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

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

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

【问题讨论】:

  • 这个有什么更新吗?
  • @tomvo 您在下面有 2 个很好的答案。请接受其中之一。

标签: php guzzle


【解决方案1】:

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]
]);

【讨论】:

    【解决方案2】:

    您可以在构建客户端或发送请求时发送“auth”参数。

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

    $client->get('/get', ['auth' => ['username', 'password', 'digest']]);
    

    另一种方法是重写 requestAsync 方法并在其中添加您的自定义逻辑。但没有理由这样做。

    【讨论】:

      猜你喜欢
      • 2018-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      • 1970-01-01
      • 2010-09-14
      • 1970-01-01
      • 2014-02-20
      相关资源
      最近更新 更多