如何制作并将具有多个键的对象传递到php curl http帖子中
作为前提,我使用nodejs为我公司的一个门户网站写了一堆端点。现在我必须在我们的另一个门户网站中创建相同的功能,但是这个门户网站是用PHP构建的...而且我对php非常新。
我的工作原理,但它似乎很草率,我最终不得不在端点做一些字符串操作,以了解我需要的东西。另外,我很确定我没有按照我应该的方式使用curl。任何帮助,将不胜感激。
这就是我所拥有的
$params = array('userID' => $userID, 'UnitID' => $unitid);
foreach ($params as $key => $value) {
$params .= $key . "=" . $value . "&";
}
$url = ':4000/api/TestCurl/' . $params;
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_POST,2);
curl_setopt($ch,CURLOPT_POSTFIELDS, $params);
$result = curl_exec($ch);
print $result;
curl_close($ch);
我在节点中得到的结果的一个例子是
{params:'ArrayuserID = 12345678&UnitID = ABC1234&'}
我的测试端点看起来像这样
app.post('/api/TestCurl/:params', UserCtrl.TestCurl);
回答如下:
您可以使用http_build_query()
将数组转换为与curl一起使用的格式。
对于POST请求:
$params = array('userID' => $userID, 'UnitID' => $unitid);
$fields_string = http_build_query($params);
// ...
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
您给出的输出的原因是您将$params
定义为数组,但随后将其连接为foreach
循环内的字符串。如果在循环中使用了不同的变量名,那么您的方法将起作用。