0

我正在构建 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 中设置我的标题。如果没有设置它们,数据将毫无问题地通过。

4

1 回答 1

0

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

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

 $data = json_encode($people);

并使用它在目标文件中获取它fopen('php://input','r');

或者根本不发送标头。

你可以看到可能的博客

于 2013-07-16T09:42:40.810 回答