Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

HTTP-сервис - как обработать POST запрос?

HTTP-сервис - как обработать POST запрос?
Я
   Akela has missed
 
31.10.19 - 10:12
Привет!
В инете везде пишут про отправку запроса, а про прием что-то совсем мало.

Сделал http-сервис принимающий POST запрос, который должен содержать структуру JSON.
В исходных данных, которые мне отправляют на сервис, все ок.
Но во входящих данных, вижу что в строке запроса все пробелы заменены на плюсы "+".
И в начале строки всегда стоит "text=".

Таким образом чтобы привести запрос к исходному виду использую нижеследующий код.
Но что-то мне не нравится такое решение...
Может есть какой-то более "правильный" способ обработки запроса?

СтрокаЗапроса = Запрос.ПолучитьТелоКакСтроку();
СтрокаЗапроса = СтрЗаменить(СтрокаЗапроса, "+", "%20");
СтрокаЗапроса = РаскодироватьСтроку(СтрокаЗапроса, СпособКодированияСтроки.КодировкаURL);
Если Лев(СтрокаЗапроса, 5) = "text=" Тогда
    СтрокаЗапроса = Прав(СтрокаЗапроса, СтрДлина(СтрокаЗапроса) - 5);
КонецЕсли;

ЧтениеJSON = Новый ЧтениеJSON();
ЧтениеJSON.УстановитьСтроку(СтрокаЗапроса);
СтруктураЗапроса = ПрочитатьJSON(ЧтениеJSON);
ЧтениеJSON.Закрыть();
 
 
   mikecool
 
1 - 31.10.19 - 10:18
а просто скормить тело ЧтениеJSON пробовал?
   Akela has missed
 
2 - 31.10.19 - 10:22
(1) Из-за того что вначале стоит "text=" json не читается.
   dmt
 
3 - 31.10.19 - 10:24
(0) > В исходных данных, которые мне отправляют на сервис, все ок.
Ты сам отправляешь или кто-то другой?
Попробуй сам вручную postman'ом запрос сформировать
   Akela has missed
 
4 - 31.10.19 - 10:29
(3) да и у меня тоже самое приходит

отправляю:
{
"Param": "hello mista"
}

приходит что-то вроде:
text={
"Param":+"hello+mista"
}
   dmt
 
5 - 31.10.19 - 10:36
(4) В заголовке стоит application/json ?
   palsergeich
 
6 - 31.10.19 - 10:44
Ерунда какая то. Сколько сервисов делал - ни разу такого не видел.
Если я правильно прочитал - то проблема с данными которые к тебе приходят.
Вот пинай тех кто формирует эту строку.
   Akela has missed
 
7 - 31.10.19 - 10:44
(5) может быть и нет, ща проверим :)
   dmt
 
8 - 31.10.19 - 10:53
(6) Аналогично.
Но он же вручную из postman сформировал запрос и та же фигня.
   timurhv
 
9 - 31.10.19 - 11:27
(7) Проверьте отправку через расширение в Chrome: Talend API Tester
   palsergeich
 
10 - 31.10.19 - 11:34
(8) Я бы проверил курлом или другой 1с базой.
   oleg_km
 
11 - 31.10.19 - 11:47
Может отправляющая сторона принудительно кодирует данные? У меня 1С и отправляет POST и принимает POST - нет таких заморочек

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.