【发布时间】:2013-07-16 09:37:31
【问题描述】:
我正在构建 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 中设置我的标题。如果没有设置它们,数据将毫无问题地通过。
【问题讨论】:
-
到底是什么问题?您提到它在没有标题的情况下工作正常,但它们出了什么问题?
-
@JohnVanDeWeghe OP 正在使用 json 数据但未正确发送 json 数据。请看下面我的回答
-
问题是我需要标头类型来正确处理请求。但是在 cURL 中设置它们时不会发送任何数据。