Php CloudMQTT-API-Guzzle

Php CloudMQTT-API-Guzzle,php,laravel,api,mqtt,guzzle,Php,Laravel,Api,Mqtt,Guzzle,我无法将卷曲转换为狂饮请求。 在文档中,要创建用户,我只需发布: $ curl -XPOST -d '{"username":"test", "password":"super_secret_password"}' -H "Content-Type:application/json" -u "$CLOUDMQTT_USER:$CLOUDMQTT_PASSWORD" https://api.cloudmqtt.com/user 在我的项目中,我不能使用curl,所以我使用

我无法将卷曲转换为狂饮请求。 在文档中,要创建用户,我只需发布:

$ curl -XPOST -d '{"username":"test", "password":"super_secret_password"}' -H         "Content-Type:application/json" -u "$CLOUDMQTT_USER:$CLOUDMQTT_PASSWORD"     https://api.cloudmqtt.com/user
在我的项目中,我不能使用curl,所以我使用guzzle:

$client = new Client();

$res = $client->post('https://api.cloudmqtt.com/user', ['auth' =>  ['xxx', 'xxx'], 'body' => ["username"=>"user", "password"=>"super_secret_password"]]);
当用户被创建时,我可以在面板上的用户列表中看到新用户,但服务器在创建用户时响应500。我做错了什么?也许我的狂饮请求格式不对?我不知道


链接到API

这将匹配您的Guzzle请求和curl请求,尽管我不能肯定这将解决您的500错误:

$client = new Client([
    'headers' => [ 'Content-Type' => 'application/json' ]
]);

$response = $client->post('https://api.cloudmqtt.com/user',
    [
        'auth' =>  ['xxx', 'xxx'],
        'body' => json_encode(
            [
                "username"=>"user",
                "password"=>"super_secret_password"
            ]
        )
    ]
);
这里的区别包括设置内容类型头和将主体编码为json而不是数组(在这里可能没有效果?)

编辑: 看起来
json
参数会自动为您设置标题和
json\u encode
正文:

$client = new Client();

$response = $client->post('https://api.cloudmqtt.com/user',
    [
        'auth' =>  ['xxx', 'xxx'],
        'json' =>
            [
                "username"=>"user",
                "password"=>"super_secret_password"
            ]
    ]
);

cURL error 18:传输结束,剩余未完成的读取数据,仍然为500:(这是Guzzle的答案吗?我稍微修改了我的答案,但在功能上不应该与我原来的答案有任何不同。无论如何,请尝试一下,以防万一。哇,伙计,这让我非常兴奋!它响应200并创建了用户!@MaoStream如果你使用body,你将必须为作为body的json数据正确设置标题。如果你使用json,我t将为您设置标题。