使用Curl发送JSON数据

6
我收到了一个JSON,可以使用php://input接收它,并且我需要将其发布到不同的URL,但我不确定如何格式化它。这是我的接收方式:

$updates = file_get_contents("php://input");

我可以对其进行json_decode,然后解析出数组,使其适合于类似于hello=world&stack=overflow之类的普通POST请求。但是是否可以将JSON仅传递到curl post中,就像这样:
curl_setopt($curl_handle, CURLOPT_POST, 1);
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $updates);

那么客户端只需要使用php://input重新获取数据就可以了吗?我问这个问题是因为客户端说他没有收到数据,可能是他没有正确设置。我注意到当你通过命令行执行类似这样的操作时,必须在命令中包含-H,以便将数据解释为普通的POST请求,也许我需要设置libcurl CURLOPT?

谢谢!

2个回答

2

大家好,我已经弄清楚了这个问题!

要将帖子作为不同的内容类型发送(例如.. application/json或text/xml),请添加此setopt调用

curl_setopt($ch, CURLOPT_HTTPHEADERS,array('Content-Type: application/json'));


0

你也可以使用

curl --silent --request POST --header 'Content-Type: application/json' \
--data $updates \
-k http://URL_to_which_you_want_to_post

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接