【问题标题】:How to send -d flag from curl with Guzzle如何使用 Guzzle 从 curl 发送 -d 标志
【发布时间】:2016-03-31 19:58:25
【问题描述】:

我有以下 cURL 语句

curl http://localhost/ocpu/library/stats/R/t.test -d "x=x0e48e4cb3f&y=x09aaf63ea6"

当我在终端中运行它时,一切都很好,我得到了我想要的响应,一个完整的计算。

现在我正在尝试使用 Guzzle 将其构建到 PHP 应用程序中。我有以下代码。

$result = $this->client->request('POST', 'http://localhost/ocpu/library/stats/R/t.test', ['json'   => ["x" => $x, "y" => $y],
                                 'header' => ["content" => "application/x-www-form-urlencoded"]])->getBody();

$x 和 $y 包含带有 cURL 语句中 x 和 y 值的字符串。

这给了我错误“400 Bad Request 响应: 没有足够的‘x’个观察结果”

使用 OpenCPU API Explorer,我发现在尝试通过在 x 和 y 参数周围添加引号将其添加为原始字符串时遇到相同的错误。

所以我的问题似乎是 Guzzle 将 x 和 y 参数作为字符串而不是 Temp 键发送。

如何让它发送准确的 cURL 参数?

提前谢谢大家。

【问题讨论】:

    标签: json curl guzzle opencpu


    【解决方案1】:
    $params = [
        'x' => 'value',
        'y' => 'value',
    ];
    
    $response = $client->post($uri, [
        'form_params' => $params,
    ]);
    

    我相信问题出在您提供的代码示例中。当您正在寻找“form_params”(我解释的)时,您正在使用“json”。当使用 'form_params' 时,会自动为表单数据设置内容类型的标题。

    更多信息可以在Guzzle 6 Request Options中找到

    【讨论】:

    • 我认为这是我忘记尝试的唯一选择,但它有效。谢谢。
    猜你喜欢
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 2019-12-12
    • 2017-04-21
    • 2017-06-06
    • 2018-12-07
    • 1970-01-01
    相关资源
    最近更新 更多