Не получается разобрать json
Всем привет. Первый раз сталкиваюсь с разбором json. Накидал скрипт, но он ничего не выдает
<?php
$content=file_get_contents('https://api.hh.ru/vacancies?area=1955');
if($content == '')
$array = array();
else
$array = json_decode($content);
Поблагодарить автора
Отправить деньги
Комментарии: 7
И что он должен выдать?
print_r($array);
забыл, как минимум.
Да, не все скопировал. Вывод всеравно нулевой.
Array ( )
Это потому, что HeadHunter требует user agent, видимо как защиту от простейших роботов.
Осваивай cURL:
Осваивай cURL:
<?php
$array = array();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.hh.ru/vacancies?area=1955');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "User Agent");
if ($content = curl_exec($ch)) {
$array = json_decode($content, true);
}
curl_close($ch);
echo '<pre>';
print_r($array);
Спасибо, я почему то думал, что cURL не особо популярен сейчас, тем более в modx'е. Честно говоря искал что то типа rtfm.modx.com/xpdo/2.x/class-reference/xpdo/xpdo.fromjson
Ты почитай сначала про одно, а потом про другое.
Это совершенно разные вещи. Примерно как автобус и контейнер для грузов.
Это совершенно разные вещи. Примерно как автобус и контейнер для грузов.
У MODx есть готовый CURL-клиент. Описан в этом комментарии. modx.pro/help/7518/#comment-52713 Не знаю подойдёт ли такой вариант для вас, но выглядит довольно красиво, в стиле ООП. :))
Он не только выглядит приятней, но и тот же юзер-агент сразу подставляет. github.com/modxcms/revolution/blob/2.x/core/model/modx/rest/modrestcurlclient.class.php#L123
Можно в консоли такое выполнить:
UPD: Вот так даже наглядней
Можно в консоли такое выполнить:
$client = $modx->getService('rest.modRestCurlClient');
print $client->config[modRestClient::OPT_USERAGENT];
Собственно, можно и свой клиент передавать.$client = $modx->getService('client', 'rest.modRestCurlClient');
$result = $client->request('https://ya.ru', '/', 'POST', $params = array('foo' => 'foo'), array(
"curlopt_useragent" => "my-user-agent",
));
Это будет юзер-агент для каждого запроса индивидуально. А можно при инициализации клиента задать базовый.$client = $modx->getService('client', 'rest.modRestCurlClient', null, array(
"userAgent" => "user-agent",
));
print $client->config[modRestClient::OPT_USERAGENT];
Вообще имеет смысл исходный код класса почитать. Кто с курлом работает, поймет, что там все необходимое есть.UPD: Вот так даже наглядней
$client = $modx->getService('client', 'rest.modRestCurlClient', null, array(
"userAgent" => "user-agent",
));
unset($client->modx);
print_r($client);
Ответ:modRestCurlClient Object
(
[config] => Array
(
[port] => 80
[timeout] => 30
[path] => /
[userAgent] => user-agent
)
[conn] =>
[response] =>
[responseType] => xml
[host] =>
)
Это сообщение было удалено
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.