|
HTTP-сервис как передать параметры | ☑ | ||
---|---|---|---|---|
0
Demetres
30.08.18
✎
14:41
|
Добрый день.
Подскажите как передать параметры для HTTP-сервиса (HTTPЗапрос.ПараметрыЗапроса)? Для вызова сервиса использую код: &НаСервере Процедура ВыполнитьHTTPЗапросНаСервере_Repairs_02() Заголовки = Новый Соответствие; Заголовки.Вставить("Content-Type", "application/json"); АдресРесурса = "*************************************************"; HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, Заголовки); Соединение = Новый HTTPСоединение("************", 443 ,,,, 100, Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено)); РезультатHTTPОтвет = Соединение.Получить(HTTPЗапрос); ОбщегоНазначенияКлиентСервер.СообщитьПользователю( СтрШаблон("Код НТТР ответа - %1", Строка(РезультатHTTPОтвет.КодСостояния))); Если РезультатHTTPОтвет.КодСостояния = 200 Тогда ПолучитьСтрокуОтвета = РезультатHTTPОтвет.ПолучитьТелоКакСтроку(); Если ЗначениеЗаполнено(ПолучитьСтрокуОтвета) Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ПолучитьСтрокуОтвета); КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
1
Demetres
30.08.18
✎
14:43
|
После вызова процедцры "ВыполнитьHTTPЗапросНаСервере_Repairs" на стороне НТТР сервиса получаю HTTPЗапрос с типом - HTTPСервисЗапрос, но как делать вызов и передать туда данные чтобы были заполнены "ПараметрыЗапроса", никак не пойму.
|
|||
2
Lexey_
30.08.18
✎
14:45
|
(1) HTTPСервисЗапрос (HTTPServiceRequest)
ПараметрыЗапроса (QueryOptions) Использование: Только чтение. Описание: Тип: ФиксированноеСоответствие. Содержит параметры запроса (в строке URL-адреса параметры следуют после знака запроса). |
|||
3
Demetres
30.08.18
✎
14:47
|
(2) я это прочитал. Но так и не понял что нужно мне дописать в моей процедуре "ВыполнитьHTTPЗапросНаСервере_Repairs" чтобы передать параметры???
|
|||
4
Demetres
30.08.18
✎
14:52
|
Может у кого-то пример кода есть?
|
|||
5
Cyberhawk
30.08.18
✎
14:54
|
Автор баклан какой-то, адрес ресурса скрыл звездочками и чего-то тут спрашивает
|
|||
6
Demetres
30.08.18
✎
14:59
|
(5) я про код спрашиваю, зачем тут адрес?
|
|||
7
Адинэснег
30.08.18
✎
15:05
|
(6) на сервисе и спрашивай, какие данные, каким методом в параметры передавать
может гетом, может постом... может строкой, может ДД |
|||
8
Адинэснег
30.08.18
✎
15:05
|
мы откуда значем, чего ждёт твой сервис
|
|||
9
Lamer1C
30.08.18
✎
15:11
|
(0) есть два варианта - 1. Через тело запроса 2. Через заголовки.
|
|||
10
Lamer1C
30.08.18
✎
15:14
|
[code]
// 2. Заголовки = Новый Соответствие(); Заголовки.Вставить("Accept", "text/xml"); Заголовки.Вставить("Token", Token); Запрос = Новый HTTPЗапрос(АдресРесурса, Заголовки); // 1. Запрос.УстановитьТелоИзСтроки(XMLЗапроса); [/code] |
|||
11
Demetres
30.08.18
✎
15:20
|
(8) в каком смысле "что ждет", не совсем вас понимаю?
(10) спасибо сейчас попробую. |
|||
12
Cyberhawk
30.08.18
✎
15:21
|
(6) За тем, что ты спрашиваешь за "ПараметрыЗапроса"
|
|||
13
Lexey_
30.08.18
✎
15:22
|
(3) в СП опечатка:
в строке URL-адреса параметры следуют после знака ВОпроса |
|||
14
Lexey_
30.08.18
✎
15:22
|
(4) пример можешь посмотреть в адресной строке браузера в этой теме
|
|||
15
Demetres
30.08.18
✎
15:27
|
(12) ну так правильно, через свою процедуру я делаю запрос. А на стороне НТТР сервиса функция
Функция RepairsGetInformation(Запрос) Возврат УТП_HS_ExportService_RepairsRepairsGetInformation(Запрос); КонецФункции Параметр "Запрос" имеет тип "HTTPСервисЗапрос", у него есть свойство "ПараметрыЗапроса". И я не могу понять как делать запрос к НТТР сервису чтобы этот параметр был заполнен? |
|||
16
Demetres
30.08.18
✎
15:30
|
(14) id=824674 это я понимаю, как сделать ссылку руами я знаю. Но мне не понятно, как сделать кодом вызов (моя процедура "ВыполнитьHTTPЗапросНаСервере_Repairs_02()") и в нем передать параметры, как через текст ссылки (id=824674)
|
|||
17
Lexey_
30.08.18
✎
15:36
|
(16) см (5)
|
|||
18
Cyberhawk
30.08.18
✎
15:38
|
(15) Никак. Это параметр на стороне сервера, а не клиента
|
|||
19
Demetres
30.08.18
✎
15:45
|
(18) получается что если формируешь кодом запрос к HTTP сервису запрос, то не можешь передавать параметры? Как-то странно
|
|||
20
Hmster
30.08.18
✎
15:51
|
HTTPЗапрос = Новый HTTPЗапрос("/api/?id=333");
HTTPСоединение = Новый HTTPСоединение(Сервер.com); HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос,ИмяВрФайла); ?id=333 - это твои параметры ?id=333&gg=2 если 2 параметра |
|||
21
Demetres
30.08.18
✎
15:55
|
(20) Спасибо
|
|||
22
Cyberhawk
30.08.18
✎
16:55
|
(19) Конечно можешь, иначе зачем на стороне сервера по-твоему это свойство сделано?
|
|||
23
Demetres
30.08.18
✎
17:44
|
(22) вот ознакомьтесь https://youtu.be/YuLXYX4lzHY
|
|||
24
Demetres
30.08.18
✎
17:50
|
Вот полный текст процедуры GET запроса к HTTP-сервису с параметрами. Все параметры указываются после знака "?", может кому-то понадобиться.
&НаСервере Процедура ВыполнитьHTTPЗапросНаСервере_Repairs_01() Заголовки = Новый Соответствие; Заголовки.Вставить("Content-Type", "application/json"); АдресРесурсаДляGET = СтрШаблон("%1/%2/?%3&%4&%5=%6&%7=%8", АдресРесурса, "Repairs", "IntegrationWithTablet", "VerifyLoginАndUserPassword", "NameUser", Логин, "Password", Пароль); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурсаДляGET, Заголовки); Соединение = Новый HTTPСоединение(АдресСервера, 443,,,, 100, Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено)); РезультатHTTPОтвет = Соединение.Получить(HTTPЗапрос); ОбщегоНазначенияКлиентСервер.СообщитьПользователю( СтрШаблон("Код НТТР ответа - %1", Строка(РезультатHTTPОтвет.КодСостояния))); Если РезультатHTTPОтвет.КодСостояния = 200 Тогда ПолучитьСтрокуОтвета = РезультатHTTPОтвет.ПолучитьТелоКакСтроку(); Если ЗначениеЗаполнено(ПолучитьСтрокуОтвета) Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ПолучитьСтрокуОтвета); КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
25
Fram
30.08.18
✎
19:06
|
А передавать пароль как параметр в url это не моветон разве?
|
|||
26
Fram
30.08.18
✎
19:09
|
(24) способ указания параметров определяется создателем сервиса. Как упомянуто в (7) их несколько может быть.
|
|||
27
Demetres
31.08.18
✎
10:29
|
(25) Да согласен. Поэтому сейчас делаю POST запрос, логин и пароль буду передовать через тело в JSON. Это моя первая встреча с HTTP-сервисом.
|
|||
28
Demetres
03.09.18
✎
13:25
|
Вот пример POST запроса с параметром. На этом всё) всем удачи!
&НаСервере Процедура ВыполнитьHTTPЗапросНаСервере_Repairs_POST() Заголовки = Новый Соответствие; Заголовки.Вставить("Content-Type", "application/json"); АдресРесурсаДляGET = СтрШаблон("%1/%2/?%3&%4", АдресРесурса, "Repairs", "IntegrationWithTablet", "VerifyLoginАndUserPassword"); // Подготовка данныз JSON для POST запроса. ЗаписьJS = Новый ЗаписьJSON(); ЗаписьJS.УстановитьСтроку(); ЗаписатьJSON(ЗаписьJS, Новый Структура("NameUser, Password", Логин, Пароль)); ТекстJSON = ЗаписьJS.Закрыть(); HTTPЗапрос = Новый HTTPЗапрос(АдресРесурсаДляGET, Заголовки); HTTPЗапрос.УстановитьТелоИзСтроки(ТекстJSON); Соединение = Новый HTTPСоединение(АдресСервера, 443,,,, 100, Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено)); РезультатHTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос); ОбщегоНазначенияКлиентСервер.СообщитьПользователю( СтрШаблон("Код НТТР ответа - %1", Строка(РезультатHTTPОтвет.КодСостояния))); Если РезультатHTTPОтвет.КодСостояния = 200 Тогда ПолучитьСтрокуОтвета = РезультатHTTPОтвет.ПолучитьТелоКакСтроку(); Если ЗначениеЗаполнено(ПолучитьСтрокуОтвета) Тогда ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ПолучитьСтрокуОтвета); КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
29
Сияющий в темноте
03.09.18
✎
20:54
|
Параметры в строке get просто пишутся текстом в строку и получаются через относительнаястрока.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |