Парсинг данных с modRest
Всем салют!
Хочу отправлять некоторые запросы по api через curl клиент modx. Начал с простого — пробую тащить курс валют. Но что-то не получается. Без curl modx все работает.
В общем есть код:
В ответ получаю пустой массив ($data):
Хотя ответ ($code) возвращается 200…
Если просто взял ссылку с запроса, то она открывается успешно.
Вроде все делаю по по документации
Прошу помощи, что делаю не так.
Благодарен за подсказки.
Спасибо!
Хочу отправлять некоторые запросы по api через curl клиент modx. Начал с простого — пробую тащить курс валют. Но что-то не получается. Без curl modx все работает.
В общем есть код:
$url = 'http://www.cbr.ru/scripts/XML_daily.asp';
$params = [
'date_req' => date("d/m/Y")
];
$client = $modx->getService('rest', 'rest.modRest');
$client->setOption('format', 'XML');
$response = $client->get($url, $params, $headers);
$data = $response->process();
// Проверяем код ответа
if (property_exists($response->responseInfo, 'scalar')) {
$code = $response->responseInfo->scalar;
};
echo '
'.$code;
// Выводим ответ
echo '
--<pre>';
print_r($data);
echo '</pre>--';
В ответ получаю пустой массив ($data):
Хотя ответ ($code) возвращается 200…
Если просто взял ссылку с запроса, то она открывается успешно.
Вроде все делаю по по документации
Прошу помощи, что делаю не так.
Благодарен за подсказки.
Спасибо!
Комментарии: 4
Не пишите 'xml' большими буквами:
Кстати, modRest устарел. Лучше используйте Guzzle.
$client->setOption('format', 'xml');
Кстати, modRest устарел. Лучше используйте Guzzle.
Здравствуйте!
Ваша подсказка:
В документации кстати указано в примере «JSON», но видимо ошибка…
Благодарю!
А еще думаю стоит посмотреть в сторону Guzzle)
Еще раз спасибо!
Ваша подсказка:
Не пишите 'xml' большими буквами:сработала)
В документации кстати указано в примере «JSON», но видимо ошибка…
Благодарю!
А еще думаю стоит посмотреть в сторону Guzzle)
Еще раз спасибо!
Быстрее на CURL, я так думаю конечно)
<?php
/**
* @param $url
* @return array
*/
function curlGet($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
$headers = array();
$headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9';
$headers[] = 'Accept-Language: ru,en;q=0.9,ru-RU;q=0.8,en-US;q=0.7';
$headers[] = 'Cache-Control: no-cache';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = array('st' => 'OK', 'data' => curl_exec($ch));
if (curl_errno($ch)) {
$result['st'] = 'Error';
$result['ErrorMsg'] = curl_error($ch);
}
curl_close($ch);
return $result;
}
$xmlData = curlGet('http://www.cbr.ru/scripts/XML_daily.asp?date_req=25.08.2022');
var_dump($xmlData);
Здравствуйте!
Спасибо за решение! На curl сам когда-то писал давно)
Хотел перенести на «curl от modx» и решил попробовать на простом парсере валюты. Хотя теперь думаю стоит и с Guzzle поковыряться)
Благодарю за ответ!
Спасибо за решение! На curl сам когда-то писал давно)
Хотел перенести на «curl от modx» и решил попробовать на простом парсере валюты. Хотя теперь думаю стоит и с Guzzle поковыряться)
Благодарю за ответ!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.