如何使用Guzzle

时间:2016-03-31 19:58:26

标签: json curl guzzle opencpu

我有以下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参数?

提前谢谢大家。

1 个答案:

答案 0 :(得分:1)

$params = [
    'x' => 'value',
    'y' => 'value',
];

$response = $client->post($uri, [
    'form_params' => $params,
]);

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

可以在Guzzle 6 Request Options

中找到更多信息