我正在使用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复制粘贴 - 仍然无法收到回复:/
答案 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
有关auth
:http://docs.guzzlephp.org/en/stable/request-options.html#auth
答案 1 :(得分:0)
你能比较Postman和Guzzle的Authentication
标题吗?如果你从Guzzle获得例外,你可以像$exception->getRequest()->getHeader('Authentication')
那样得到它。