PHP通过curl发送POST请求

时间:2013-12-02 01:26:39

标签: php json curl

我需要使用curl向外部http API发出POST请求。当我使用curl命令行调用API时,它返回正确的数据。但是,当我从php脚本调用它时,我很难获得正确的数据。

当我使用终端的curl命令时,我得到了正确的数据:

curl -i -H“接受:application / json”-X POST -d“type_category_id = 4”http://example.com/api/

php中我的curl_setopts()中CURLOPT_POSTFIELDS的正确格式是什么?

我尝试了以下(并且失败了):

<?php
$data = "type_category_id=4";

$ch = curl_init('http://example.com/api/');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($data))
);

$result = curl_exec($ch);
?>

1 个答案:

答案 0 :(得分:8)

将其设为Accept: application/json而不是Content-Type: application/json

您已在命令行中完成此操作,但未在php脚本中完成。