PHP中的Json+post+curl

PHP中的Json+post+curl,php,json,curl,Php,Json,Curl,在阅读我的实际问题之前,请不要结束这个问题。我见过很多相关的问题,但我仍然有。 我只想在PHP中使用CURL通过POST方法发送一个json\u编码的数组。当我将内容类型设置为application/json时,数据不会被发布。我收到空的post数组。当我删除内容类型行时,数据被发布,但不是json。 这是我的密码 $data = array('id' => $post['id'], 'action' => $post['action']); $post_data = http_

在阅读我的实际问题之前,请不要结束这个问题。我见过很多相关的问题,但我仍然有。 我只想在PHP中使用
CURL
通过
POST
方法发送一个
json\u编码的
数组。当我将
内容类型设置为application/json
时,数据不会被发布。我收到空的
post
数组。当我删除内容类型行时,数据被发布,但不是json。 这是我的密码

 $data = array('id' => $post['id'], 'action' => $post['action']);
 $post_data = http_build_query($data);
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
 curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));
在这种情况下,我收到了空邮件。如果我注释掉行
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Content-Type:application/json'))我将接收post数据,但不是json编码的。我想要json_编码的数组。谁能告诉我我做错了什么


最好的祝愿:

您正在将查询字符串编码为json,而不是数组删除
$post\u data=http\u build\u query($data)
并将
$data
传递给json\u encode

 $data = array('id' => $post['id'], 'action' => $post['action']);
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
 curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

当然,这需要服务nedds支持json POST。

尝试发送-n-accept原始POST请求,通过

<?php $postdata = file_get_contents("php://input"); ?> 


您确定目标资源允许您请求响应格式吗?我正在向我的其他控制器发送请求。我怎样才能知道目标资源是否允许?当我删除http\u build\u query($data)
时,即使这样请求也不会被发布。空帖子什么是
服务需要支持json帖子。
?我怎样才能知道它是否支持?@awaiskarni使用
json\u decode(file\u get\u contents(“php://input“”,true)
以获取发布的数据。如果要检查发布的数据是否为json编码的?我正在检查
是否(是对象(json\u decode($post))
,但现在我该怎么办?