用于Reddit的PHP和JSON

时间:2017-01-19 11:16:14

标签: php json reddit

想从特定的Reddit用户那里获取一些数据。

Reddit服务器上有一个动态JSON文件,可以远程访问。

JSON文件路径为:http://www.reddit.com/user/tiagoperes/about.json

(您可以在网址中将“tiagoperes”替换为您尝试查找的任何用户) - 谢谢Tom Chapin

问题:我收到错误消息

  

http错误500:reddiant.com/reddit.php

错误日志:

  

PHP警告:   的file_get_contents(https://www.reddit.com/user/tiagoperes/about.json):   无法打开流:HTTP请求失败! HTTP / 1.1 403禁止使用   第5行

     

PHP致命错误:未捕获的异常' InvalidArgumentException'   with message' Passed变量不是数组或对象,使用空   数组代替'在第8行

代码

<?php


$url = "https://www.reddit.com/user/tiagoperes/about.json";
$json = file_get_contents($url);

$jsonIterator = new RecursiveIteratorIterator(
    new RecursiveArrayIterator(json_decode($json, TRUE)),
    RecursiveIteratorIterator::SELF_FIRST);

foreach ($jsonIterator as $key => $val) {
    if(is_array($val)) {
        echo "$key:\n";
    } else {
        echo "$key => $val\n";
    }
}

(灵感来自:http://codepad.org/Gtk8DqJE

解决方案:请求调试。

这里的问题是什么?

无法找到使其正常工作的方法,而且应该非常简单。

谢谢!

1 个答案:

答案 0 :(得分:2)

在第一个程序中遇到了一些麻烦,所以决定改变方法。

让它像那样工作:

<?php
    $opts = array(
    'http'=>array(
    'method'=>"GET",
    'header'=>"User-Agent: reddiant api script\r\n"
    ));

    $context = stream_context_create($opts);
    $url = "http://www.reddit.com/user/tiagoperes/about.json";
    $json = file_get_contents($url, false, $context);

    $result = json_decode($json, true);

    // Result:
    var_dump($result);

    //echo data
    echo $result['data']['name'];