使用Guzzle PHP发送请求时获取“提供的用户凭据无效”

时间:2017-09-07 06:04:09

标签: php postman guzzle

我正在使用Guzzle PHP和Postman扩展程序向Chrome发送绝对相同的请求。

当使用Postman发送请求时 - 我确实收到了响应,但当我向Guzzle发送相同的请求时,我收到“提供的用户凭据无效”。

我有Auth类型Basic并为这两个应用提供相同的用户名/密码。这是我用于guzzle的代码:

    $credentials = [$client->api_username, $client->decrypted_password, 'basic'];

    $result = $this->client->get($fullUrl, [
       'auth' => $credentials
    ]);

我已经转储了凭证 - 这是正确的数组。我仔细检查了Guzzle docs。有趣的是,当我尝试为同一个端点发送另一个用户的请求时 - 我确实收到了正确的响应,这让我想到,我可能在凭证中有错字 - 但我已经重新检查 - 甚至从Postman复制粘贴 - 仍然无法收到回复:/

2 个答案:

答案 0 :(得分:1)

您是否愿意分享变量$credentials作为数据的内容? 如果尝试下面的代码,它已经过测试并且有效:

$client  = new Client();
$this->results = $client->request('GET/POST', $uri, [
  'debug' => true,
  'query'   => $arguments,
  'auth'    => [$username, $password],
  'verify'  => false
])->getBody();

如果您询问其他参数,例如verify,此属性会告诉guzzle禁用证书验证。

请阅读以下内容:http://docs.guzzlephp.org/en/stable/request-options.html#verify

有关authhttp://docs.guzzlephp.org/en/stable/request-options.html#auth

的详细信息

答案 1 :(得分:0)

你能比较Postman和Guzzle的Authentication标题吗?如果你从Guzzle获得例外,你可以像$exception->getRequest()->getHeader('Authentication')那样得到它。