我有以下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参数?
提前谢谢大家。
答案 0 :(得分:1)
$params = [
'x' => 'value',
'y' => 'value',
];
$response = $client->post($uri, [
'form_params' => $params,
]);
我认为问题出在您提供的代码示例中。你正在使用' json'什么时候' form_params'是(我解释)你正在寻找。当' form_params'使用时,会自动为表单数据设置内容类型标题。
中找到更多信息