我正在使用 Guzzle 6 从Ruckus公共API检索数据,但一直收到以下错误
传递给GuzzleHttp \ Client :: request()的参数3必须是该类型 array,boolean given
我用Google搜索并搜索了类似的问题。唯一解决的是post中的第二个答案,即将guzzle版本降级为5.但是,其他正在使用其他功能的团队成员正在使用Guzzle 6,因此降级到版本5也可能是团队的一个问题。
由于我没有使用像那篇文章那样的任何软件包,我不认为Guzzle版本可能是这里的罪魁祸首,所以有谁能让我知道我做错了什么?谢谢。
顺便说一句,我正在使用Laravel Command。 handle函数中的代码如下:
use Illuminate\Console\Command;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$client = new Client();
//to bypass local ssl certificate issuer
$client->setDefaultOption('verify', false);
$res = $client->request(
'POST',
$this->baseUrl . '/v4_0/session',
[
"headers" => [
"Content-Type" => "application/json;charset=UTF-8"
],
"json" => [
"username" => "admin",
"password" => "admin"
]
]
);
$headers = explode(';', $res->getHeader('Set-Cookie'));
return current($headers);
}
Ruckus公共API:http://docs.ruckuswireless.com/vscg-enterprise/vsz-e-public-api-reference-guide-3-5.html#header-overview。我使用的是版本4,但即使我使用的是版本5,我仍然会遇到同样的错误。
答案 0 :(得分:1)
最后,我在Guzzle的github帐户上记录了一个问题。事实证明,$client->setDefaultOption('verify', false);
不再是受支持的函数调用。相反,它应该传递给第三个参数如下:
$res = $client->request(
'POST',
$this->baseUrl . '/v4_0/session',
[
"verify" => false,
"headers" => [
"Content-Type" => "application/json;charset=UTF-8"
],
"json" => [
"username" => "admin",
"password" => "admin"
]
]
);
感谢所有提出建议并试图提供帮助的人。