使用Guzzle 6来请求Ruckus公共API,但是将Argument 3传递给GuzzleHttp \ Client :: request()必须是类型数组,boolean给定

时间:2017-07-20 22:38:15

标签: laravel api guzzle

我正在使用 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,我仍然会遇到同样的错误。

1 个答案:

答案 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"
        ]
    ]
);

感谢所有提出建议并试图提供帮助的人。