$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);
那也不起作用
答案 0 :(得分:2)
你只需要添加:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
答案 1 :(得分:0)
正如其他人所提到的,reddit正在向您发送302重定向到https。您可以通过检查curl_getinfo()
返回的标头来查看。
正如sorak所描述的,启用重定向跟踪将起作用。但是,这不是一个好的解决方案 - 您将在每个API调用上发出两个HTTP请求。这是完全不必要的网络浪费,并增加了脚本的执行时间。相反,只需首先从https://www.reddit.com/
更改您要求的网址。