Задать вопрос
@baryshevm34534

PHP Curl Bad Request JSON — проблема в сообщение — как правильно форматировать?

есть массив дата, который передается для отправки через curl в фукцнию

$arData = [
  "NAME" => 'Название конференции',
  "CODE" => "",
  "START" => '18.04.19 11:11:10',
];
telegramNotificationSend($id, $typeNotification, $arData);

в функции отправки есть код формирующий сообщение

$textNotification = " Конференция " . $arData["NAME"] . " скоро начнется. Время начала в " . $arData["START"];

При выполнение curl в ответ пишет Bad Request

Если отправлять просто текстовую строку, без подстановки информации из массива arData, то все отправляет корректно

$textNotification = $dateStart . " Конференция скоро начнется. Время начала в ";

код отправки

$data_string = json_encode ($data, JSON_UNESCAPED_UNICODE);
  $curl = curl_init(TELEGRAM_BOT_URL);
  curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
  curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
  // Принимаем в виде массива. (false - в виде объекта)
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($curl, CURLOPT_HTTPHEADER, array(
             'key: ' . TELEGRAM_BOT_KEY,
             'Content-Type: application/json',
             'Content-Length: ' . strlen($data_string))
  );
  $result = curl_exec($curl);
  curl_close($curl);

Если даже просто приравнять $textNotification = $arData["NAME"], то тоже будет ошибка Bad Request.

В чем может быть проблема? В скрытых не поддерживаемых символах при передаче? Но я же просто одну строку приравнял к другой, откуда они могут появиться?
  • Вопрос задан
  • 144 просмотра
Подписаться 2 Простой 6 комментариев
Решения вопроса 1
@baryshevm34534 Автор вопроса
Вопрос решен:
1) кодируем json без JSON_UNESCAPED_UNICODE
2) добавляем к заголовку charset=utf-8
$data_string = json_encode ($data);
'Content-Type: application/json; charset=utf-8',
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы