我在这里做错了什么 (CURL),不管我怎么尝试 returns empty/null

What am I doing wrong here (CURL), no matter what I try it returns empty/null

$url = "http://www.reddit.com/r/{mysubreddit}/new.json";
$fields = "sort=new";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);

var_dump($data);

{mysubreddit} 是我想查看的任何 subreddit。通过邮递员或什至在浏览器中获取 url 就可以正常工作。但是当我使用 PHP/CURL 时,它 returns 是空的。我已经尝试用另一个 URL 替换 URL 到另一个站点,它工作正常,所以 curl 部分工作正常。

reddit 有什么我必须设置的吗? headers?或明确告诉它 JSON?或者什么?

我认为这可能与 POST 有关,但我尝试 GET 到,仍然 empty/null。

$url = "http://www.reddit.com/r/{mysubreddit}/new.json?sort=new";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);

那也不行

您只需添加:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

正如其他人所提到的,reddit 正在向您发送 302 重定向到 https。您可以通过检查 curl_getinfo().

返回的 headers 来看到这一点

如 sorak 所述,启用重定向跟随将起作用。但是,这不是一个好的解决方案 - 您将在每次 API 调用时发出两个 HTTP 请求。这是一种完全不必要的网络浪费,会增加脚本的执行时间。相反,只需首先更改您请求来自 https://www.reddit.com/ 的 url。