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