我在这里做错了什么(CURL),无论我尝试什么,都会返回empty / null

时间:2018-02-12 23:46:48

标签: php curl reddit

$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时,它返回空。我已经尝试将URL更换为另一个网站的另一个URL,并且工作正常,因此卷曲部分工作正常。

我必须设置reddit吗?头?或明确告诉它JSON?或者是什么?

我认为它可能与POST有关,但我尝试了GET,仍为空/ 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);

那也不起作用

2 个答案:

答案 0 :(得分:2)

你只需要添加:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

答案 1 :(得分:0)

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

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