|
API v3. Параметры в формте JSON. | ☑ | ||
---|---|---|---|---|
0
runlikepony
06.02.20
✎
13:04
|
Коллеги, добрый день.
Подскажите пожалуйста или угостите примерчиком как подставить параметр в формате json в http запросе. Пример из мануала: $ curl http://{SDP_BASE_URL}/api/v3/requests \ -H "Authtoken: FC645540-6424-4A07-8A05-A865F4B8168A" \ -d 'input_data= { "list_info": { "row_count": 20, "start_index": 1, "sort_field": "subject", "sort_order": "asc", "get_total_count": true, "search_fields": { "subject": "New hire", "priority.name": "high" }, "filter_by": { "name": "Open_System" } } }' Что имею сейчас. Запрос выполняется, но результат выполнения без учета параметров. Заранее спасибо. &НаСервере Процедура ВыполнитьНаСервере() СтрокаJSN = СформироватьСтрокуJSN(); АдресСервиса = "sd-srv-01"; АдресРесурса = "/api/v3/requests"; СтрокаПараметров = ""; HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса); HTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded"); HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаJSN, КодировкаТекста.UTF8); HTTPЗапрос.Заголовки.Вставить("Authtoken", ""); HTTPЗапрос.Заголовки.Вставить("input_data", СтрокаJSN); HTTPСоединение = Новый HTTPСоединение(АдресСервиса); Попытка Ответ = HTTPСоединение.Получить(HTTPЗапрос); Исключение Сообщить("Ошибка при отправке запроса: " + ОписаниеОшибки()); КонецПопытки; Если Ответ.КодСостояния = 200 Тогда СтрокаОтвет = Ответ.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8); Если Не ПустаяСтрока(СтрокаОтвет) Тогда РезультатПроверки = СтрокаОтвет; Сообщить(РезультатПроверки); КонецЕсли; КонецЕсли; КонецПроцедуры &НаСервере Функция СформироватьСтрокуJSN() СтруктураInputDATA = Новый Структура; СтруктураList = Новый Структура; СтруктураFilterBy = Новый Структура; Структура = Новый Структура; Структура.Вставить("row_count", 1); Структура.Вставить("start_index", 0); СтруктураFilterBy.Вставить("name", "8702_MyView"); Структура.Вставить("filter_by", СтруктураFilterBy); СтруктураList.Вставить("list_info", Структура); ЗаписьJSON = Новый ЗаписьJSON; ПараметрыJSON = Новый ПараметрыЗаписиJSON(, Символы.Таб); ЗаписьJSON.УстановитьСтроку(ПараметрыJSON); ЗаписатьJSON(ЗаписьJSON, СтруктураList, Новый НастройкиСериализацииJSON); СтрJSON = ЗаписьJSON.Закрыть(); Возврат СтрJSON; КонецФункции |
|||
1
VKS
06.02.20
✎
13:33
|
Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
|
|||
2
VKS
06.02.20
✎
13:34
|
и тут токен нужен
HTTPЗапрос.Заголовки.Вставить("Authtoken", ""); |
|||
3
runlikepony
06.02.20
✎
13:40
|
Спасибо.
Токен вставил. Если делать через "ОтправитьДляОбработки". Возвращает ошибку... |
|||
4
runlikepony
06.02.20
✎
13:54
|
В моем примере необходимо реализовать GET запрос. "ОтправитьДляОбработки" не подойдет.
|
|||
5
VKS
06.02.20
✎
14:04
|
С гетом не выйдет, похоже 1с так не умеет. Я в свое время решил через вебпрограммистов, они запрашивали, а мне передавали в нормальном виде.
Как в get-запрос засунуть тело? |
|||
6
timurhv
06.02.20
✎
14:44
|
(4) По-моему, у вас ошибка в заголовке
http://catalog.mista.ru/public/619416/ |
|||
7
Necessitudo
06.02.20
✎
14:57
|
(5) GET-запрос не содержит body.
|
|||
8
lamme
06.02.20
✎
15:01
|
недавно делал обращение к сервису армтека
там параметры передаются в джсоне постом --------------------------------------- СтрОтвета = ПолучитьЛогинПарольОтАрмтека(); email =СтрОтвета.email; password = СтрОтвета.password; VKORG = СтрОтвета.VKORG; KUNNR_RG = СтрОтвета.KUNNR_RG; HTTPСоединение = Новый HTTPСоединение("ws.armtek.ru", , email, password, Новый ИнтернетПрокси, ,); HTTPЗаголовки = Новый Соответствие; HTTPЗаголовки.Вставить("Content-Type", "application/json"); HTTPЗапрос = Новый HTTPЗапрос("/api/ws_search/search?format=json", HTTPЗаголовки); Запись = Новый ЗаписьJSON; ИмяФайлаТела = ПолучитьИмяВременногоФайла("json"); Запись.ОткрытьФайл(ИмяФайлаТела); Данные = Новый Структура; Данные.Вставить("VKORG", VKORG); Данные.Вставить("KUNNR_RG", KUNNR_RG); Данные.Вставить("PIN", КодироватьСтроку(сокрлп(ИскомыйОЕМ) , СпособКодированияСтроки.КодировкаURL)); Данные.Вставить("format", "json"); Данные.Вставить("format", "json"); ЗаписатьJSON(Запись, Данные, Новый НастройкиСериализацииJSON); Запись.Закрыть(); HTTPЗапрос.УстановитьИмяФайлаТела(ИмяФайлаТела); Ответ = HTTPСоединение.ВызватьHTTPМетод("POST", HTTPЗапрос); Возврат Ответ |
|||
9
VKS
06.02.20
✎
15:15
|
(8) в вашем примере ВызватьHTTPМетод("POST", HTTPЗапрос)
а мы про get (7) может содержать, 1с не умеет так работать |
|||
10
crasler
06.02.20
✎
15:29
|
Можно попробовать реализовать через сокеты http://catalog.mista.ru/public/119982/
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |