хочу получить от конкретного пользователя Reddit некоторые данные.
На серверах Reddit есть динамический файл JSON, к которому можно получить удаленный доступ.
Путь к файлу JSON: http://www.reddit.com/user/tiagoperes/about.json
(где вы можете заменить «tiagoperes» в URL любым пользователем, которого вы пытались найти) — спасибо Том Чапин
проблема: Я получаю сообщение об ошибке
Ошибка 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»
с сообщением ‘Переданная переменная не является массивом или объектом, используя пустой
массив вместо ‘в строке 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)
Решение: Попросить отладку.
В чем проблема прямо здесь?
Не могу найти способ заставить его работать и должен быть достаточно простым.
Спасибо!
Получал некоторые неприятности в первой процедуре, поэтому решил изменить подход.
Получилось так работать:
<?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'];
Других решений пока нет …