Отправка JSON через POST-запрос
Всем привет! Отправляю POST запрос в формате JSON на yandex.com/indexnow
Получаю ответ
Получаю ответ
{ ["success"]=> bool(false) ["message"]=> string(14) "Invalid params" }
Не пойму в каком виде у меня формируется JSON<?php
$url = 'https://yandex.com/indexnow';
$params = array
(
"host" => "mysite.ru",
"key" => "32248d5f5c3612c6",
"keyLocation" => "",
"urlList" => [
"https://mysite.ru/services.html",
"https://mysite.ru/qweqweqwe.html"
]
);
/* @var modRest $client */
$client = $modx->getService('rest', 'rest.modRest');
//$client->setOption('format','JSON'); // Формат полученных данных принимает json или xml (по умолчанию json) для преобразования в массив
//$client->setOption('suppressSuffix','true'); // иначе при использовании format=json в конец url добавится http://site.ru/method.json
$response = $client->post($url, $params);
$data = $response->process(); // Вернет массив
var_dump($data);
А вот этот код работает, получаю успешную отправку.$data = array(
"host" => "mysite.ru",
"key" => "32248d5f5c3612c6",
"keyLocation" => "",
"urlList" => [
"https://mysite.ru/services.html",
"https://mysite.ru/qweqweqwe.html"
]
);
$ch = curl_init('https://yandex.com/indexnow');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json; charset=utf-8'));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data, JSON_UNESCAPED_UNICODE));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$res = curl_exec($ch);
curl_close($ch);
$res = json_encode($res, JSON_UNESCAPED_UNICODE);
print_r($res);
Комментарии: 3
Может пропустили
$params = json_encode($params)
ссылка
$client->setOption('format','JSON');
попробуйте указать json в нижнем регистре, в методе preparePayload format проверяется в нижнем регистре, json_encode не нужен, он уже есть в методе
Спасибо! Заработало! Вчера весь мозг вынес себе XD
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.