Имя: Пароль:
1C
 
HTTP сервис. Как передать параметры в post запросе
0 ИС-2
 
13.10.23
13:28
Подскажите как задать шаблон в базе приемник для post запроса, чтобы он принял 2 параметра

Написал такой шаблон
/LoadMessageFromKIS/{MessageNo}/{ReceivedNo}

вызываю HTTP сервис такой строкой
    ЗапросHTTP = Новый HTTPЗапрос("zup3_test/hs/ExchangeKIS/LoadMessageFromKIS/?MessageNo="+Узел_ЗУП3.НомерОтправленного + "/ReceivedNo="+Узел_ЗУП3.НомерПринятого, ЗаголовокЗапросаHTTP);

zup3_test/hs/ExchangeKIS/LoadMessageFromKIS/?MessageNo=6&ReceivedNo=0

Ответ приходит 404.

Если в базе приемник убрать параметры и оставить только
/LoadMessageFromKIS/
1 novichok79
 
13.10.23
13:36
пздц...
давно не открывал конфигуратор, но кажется было так:

ЗапросHTTP.УстановитьТело(ТекстЗапросаВJSON)


ну и затем

Соединение.Получить(ЗапросHTTP)
2 lubitelxml
 
13.10.23
13:41
запросPOST = Новый HTTPЗапрос(параметрыhs);
запросPOST.УстановитьТелоИзСтроки(json,,ИспользованиеByteOrderMark.НеИспользовать);
запросPOST.Заголовки.Вставить("Content-Type" ,application/json");
ФайлОтвета = КаталогВременныхФайлов()+ "answer.txt";
HTTPСоединение.ОтправитьДляОбработки(запросPOST, ФайлОтвета);
3 lubitelxml
 
13.10.23
13:43
+(2) переменная json - ранее сформированный джон с параметрами.
4 Donkey_hot
 
13.10.23
14:19
(0) Если вы написали такой шаблон, то очевидно и обращаться надо по такому шаблону...


/LoadMessageFromKIS/123/456

Вы же используете необязательные параметры после знака вопроса, они немного для другого предназначены. Посмотрите руководство разработчика.
5 lubitelxml
 
13.10.23
14:20
+(3) (4) - там со слешами нельзя ошибаться
ИмяHS     = "ххх.хх";
параметрыhs = "/хх/хххх";
HTTPСоединение = Новый HTTPСоединение(ИмяHS);
6 BaZZiL
 
13.10.23
20:08
/{MessageNo}/{ReceivedNo} это параметры URL

Параметры запроса это

?MessageNo=6&ReceivedNo=0

Удалить из шаблона /{MessageNo}/{ReceivedNo} и все заработает.

А так оно не находит требуемый адрес, оканчивающийся на
/{MessageNo}/{ReceivedNo} поэтому ошибка 404

Значения получить в тексте обработчика метода POST через

МесседжНом = Запрос.ПараметрыЗапроса.Получить("MessageNo");

РесиведНом = Запрос.ПараметрыЗапроса.Получить("ReceivedNo");
7 BaZZiL
 
13.10.23
20:10
Преимущество использования параметров запроса по сравнению с параметрами URL такое что можно после добавить/удалить/поменять еще параметры и их обработку, а адрес метода не изменится.
8 BaZZiL
 
13.10.23
20:15
А еще в методе POST значения MessageNo и ReceivedNo лучше
упаковать в JSON и положить в тело запроса.
А пользоваться ими для GET запроса.

Так их значений не будет видно в адресе.
2 + 2 = 3.9999999999999999999999999999999...