【问题标题】:CloudMQTT API GuzzleCloudMQTT API Guzzle
【发布时间】:2017-07-13 00:39:47
【问题描述】:

我在将 curl 转换为 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,所以我使用 guzzle:

$client = new Client();

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

创建了用户,我可以在面板的用户列表中看到新用户,但服务器在创建用户时响应 500。我究竟做错了什么?也许我的 guzzle 请求格式错误?我不知道

https://www.cloudmqtt.com/docs-api.html API 链接

【问题讨论】:

    标签: php laravel api mqtt guzzle


    【解决方案1】:

    这将使您的 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"
                ]
            )
        ]
    );
    

    这里的区别包括设置 Content-Type 标头以及将正文编码为 json 而不是数组(在这里可能没有效果?)。

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

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

    Docs

    【讨论】:

    • cURL 错误 18:传输已关闭,剩余未完成的读取数据,仍为 500 :(
    • 是 Guzzle 的吗?
    • 我稍微修改了我的答案,但它在功能上应该与我原来的没有任何不同。无论如何都要尝试一下,以防万一。
    • 哇,这对我帮助太大了!它响应 200 并创建用户!
    • @MaoStream 如果您使用正文,则必须为作为正文的 json 数据正确设置标头。如果你使用 json,它会为你设置标题。
    猜你喜欢
    • 2018-07-15
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 2017-06-19
    相关资源
    最近更新 更多