发布JSON时出现cURL标头问题

时间:2013-07-16 09:37:32

标签: php json http post curl

我正在构建API,但在使用cURL进行测试时遇到了一些问题。

我的代码如下所示:

$people = array( array('name' => urlencode('casper'),
                       'shoesize' => urlencode(41)
                      ),
                 array('name' => urlencode('charlotte'),
                       'activated' => urlencode(1)
                      )
          );

$data = http_build_query(array('data' => json_encode($people)));
$url = '...';

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Accept: application/json',
    'Content-Type: application/json',
    'Connection: Keep-Alive'
));
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($ch);

curl_close($ch);

return $result; 

URL端点的方法只返回$ _POST ['data']。

这一直有效,直到我在cURL中设置标题。如果没有设置它们,数据就会毫无问题地通过。

1 个答案:

答案 0 :(得分:0)

如果您使用json标头,则发送json数据 替换

$data = http_build_query(array('data' => json_encode($people)));

 $data = json_encode($people);

并使用fopen('php://input','r');

在目标文件中获取它

或者根本不发送标题。

你可以看到blog