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

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

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

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

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

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

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