cURL POST 在 PHP 中请求 returns NULL 但在纯 cURL 代码中它是 returns 数据

cURL POST request returns NULL in PHP but in pure cURL code it returns data

运行 cURL 中的这段代码为我提供了 JSON 数据:

curl -X POST -H "Content-Type: application/json"  -d '{"fund_id":"74","product_id":"22","from_date":"2017-01-01","to_date":"2022-01-12"}' https://api.hdfclife.com/api/funds/get-fund-nav

但是在 php 中使用 curl 时,我收到 NULL 作为数据:


$url = "https://api.hdfclife.com/api/funds/get-fund-nav";

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$headers = array(
   "Content-Type: application/json",
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

$data = '{"fund_id":"74","product_id":"22","from_date":"2017-01-01","to_date":"2022-01-12"}';

curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

//for debug only!
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

$resp = curl_exec($curl);
curl_close($curl);
var_dump($resp);

?>

我在这里做错了什么?我也是 PHP 的新手,所以请放轻松。

您调用的 URL 似乎已永久移动,它本身重定向请求和 returns 状态代码“301 永久移动”。 php 中的 CURL 默认不支持重定向,必须为 CURL 声明选项才能支持它。 只需将以下代码添加到您的 CURL 选项,它应该可以正常工作。

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_POSTREDIR, 3);