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

Php 我在这里做错了什么(CURL),无论我尝试什么,它都返回空/null,php,curl,reddit,Php,Curl,Reddit,{mysubreddit}是我想检查的任何subreddit。只需通过邮递员,甚至在浏览器中抓取url就可以了。但是当我使用PHP/CURL时,它返回空。我已经尝试过用另一个指向另一个站点的URL替换该URL,但效果很好,所以curl部分工作正常 reddit有什么我必须设置的吗?标题?或者显式地告诉它JSON?还是什么 我认为这可能与POST有关,但我尝试了访问,仍然为空/空 $url = "http://www.reddit.com/r/{mysubreddit}/new.json"; $f

{mysubreddit}是我想检查的任何subreddit。只需通过邮递员,甚至在浏览器中抓取url就可以了。但是当我使用PHP/CURL时,它返回空。我已经尝试过用另一个指向另一个站点的URL替换该URL,但效果很好,所以curl部分工作正常

reddit有什么我必须设置的吗?标题?或者显式地告诉它JSON?还是什么

我认为这可能与POST有关,但我尝试了访问,仍然为空/空

$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);
这也行不通

您只需要添加:

$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);
您只需添加:

$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);

正如其他人提到的,reddit正在向您发送一个302重定向到https。通过检查返回的头文件,您可以看到这一点


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

正如其他人提到的,reddit正在向您发送一个302重定向到https。通过检查返回的头文件,您可以看到这一点


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

url正在重定向到https。将url更改为https或添加curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);根据你的卷曲要求。使用我的通用卷曲函数。。。url正在重定向到https。将url更改为https或添加curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);根据你的卷曲要求。使用我的通用卷曲函数。。。真棒,这对我有帮助,在我的情况下,运行一个常规的curl请求会产生301错误,这意味着服务器可能会提供另一个curl没有遵循的重定向,添加代码行会使你的请求遵循服务提供的任何重定向。真棒,这对我有帮助,在我的情况下,运行一个常规的curl请求会产生301错误,这意味着服务器可能会提供另一个curl没有遵循的重定向,添加这行代码会使您的请求遵循服务提供的任何重定向。