|
1c 7.7 и простой post/get запрос. 🠗 (Волшебник 28.01.2025 15:33) | ☑ | ||
---|---|---|---|---|
0
vplotnikov
27.01.25
✎
23:08
|
Не приходилось пользоваться WinHttp.WinHttpRequest.5.1
Есть такой запрос, который должен бы отрабатываться. curl https://api.qvalon.com/v1/orgstruct/divisions \ --header 'Authorization: Bearer <your_token>' Подскажите, пожалуйста, синтаксис. Как это должно быть оформлено. |
|||
1
MWWRuza
гуру
27.01.25
✎
23:25
|
Целиком функция из моей рабочей конфы, там много лишнего, просто ей много лет, и она "обросла" всякой обвязкой...
Но, в принципе, как пример - можно использовать: //****************************************************************************** // глHTPP_ВыполнитьЗапрос() // // Параметры: // ТипЗапроса="POST",Url,сзJSONЗапрос,КлючСессии="",сзЗаголовки="",СтрОшибка="" // // Возвращаемое значение: // Ответ // // Описание: // Функция глHTPP_ВыполнитьЗапрос(ТипЗапроса="POST",Url,сзJSONЗапрос,КлючСессии="",сзЗаголовки="",СтрОшибка="", НеОбр429 = 0, ПрикинутьсяБраузером = 0) Экспорт Попытка WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1"); Исключение Предупреждение("Не удалось создать объект WinHttp!"); Возврат 0; КонецПопытки; WinHttp.Option(2,"utf-8"); WinHttp.SetTimeouts(0, 0, 0, 0); Если ТипЗначенияСтр(сзJSONЗапрос) = "СписокЗначений" Тогда ЗапросJSON = ЗначениеВJSON(сзJSONЗапрос); Иначе ЗапросJSON = ""; КонецЕсли; //Тхт = СоздатьОбъект("Текст"); //Тхт.ДобавитьСтроку(ЗапросJSON); //Тхт.Записать("C:\Temp\ЗапросМсХТТП.txt"); WinHttp.Open(ТипЗапроса,Url,1); WinHttp.SetRequestHeader("Content-Type", "application/json"); Если (ПрикинутьсяБраузером = 1) И (Константа.ПрикБраузЧерезAPI = 1) Тогда WinHttp.SetRequestHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59"); КонецЕсли; WinHttp.SetRequestHeader("Accept-Charset", "utf-8"); Если ПустоеЗначение(КлючСессии) = 0 Тогда WinHttp.SetRequestHeader ("Authorization", "Bearer " + КлючСессии); КонецЕсли; Если ПустоеЗначение(сзЗаголовки) = 0 Тогда СчЦикла = 0; Для СчЦикла = 1 По сзЗаголовки.РазмерСписка() Цикл ИмяЗаголовка = ""; ЗначениеЗаголовка = сзЗаголовки.ПолучитьЗначение(СчЦикла,ИмяЗаголовка); Если (ПустоеЗначение(ИмяЗаголовка) = 0) И (ПустоеЗначение(ЗначениеЗаголовка) = 0) Тогда WinHttp.SetRequestHeader (ИмяЗаголовка, ЗначениеЗаголовка); КонецЕсли; КонецЦикла; КонецЕсли; Рез = WinHttp.Send(ЗапросJSON); RequestTimeout = 40; Попытка Рез = WinHttp.WaitForResponse(RequestTimeout); Исключение Рез = 0; Ответ = ОписаниеОшибки(); WinHttp = 0; Возврат Ответ; КонецПопытки; Если Рез = -1 Тогда Статус = WinHttp.status(); СтатусТекст = WinHttp.statusText(); Ответ = СокрЛП(WinHttp.ResponseText()); Если (Статус <> 200) Или (Статус <> 201) Тогда Если Статус = 307 Тогда//перенаправление Url = WinHttp.GetResponseHeader("Location"); Если ПустоеЗначение(Url) = 0 Тогда Возврат глHTPP_ВыполнитьЗапрос(ТипЗапроса,Url,сзJSONЗапрос,КлючСессии,сзЗаголовки,СтрОшибка); КонецЕсли; КонецЕсли; Если (Статус = 429) И (НеОбр429 = 0) Тогда//слишком много запросов глЗадержка(5); WinHttp = 0; Возврат глHTPP_ВыполнитьЗапрос(ТипЗапроса,Url,сзJSONЗапрос,КлючСессии,сзЗаголовки,СтрОшибка); КонецЕсли; Если ПустоеЗначение(Ответ) = 0 Тогда Если Лев(Ответ,1) = "{" Тогда сзОтвет = глРазборJSON(Ответ); СтрОшибка = сзОтвет.Получить("error_description"); WinHttp = 0; Возврат Ответ; КонецЕсли; Иначе WinHttp = 0; Возврат ""; КонецЕсли; КонецЕсли; КонецЕсли; WinHttp = 0; Возврат Ответ; КонецФункции // ВыполнитьЗапрос() |
|||
2
MWWRuza
гуру
27.01.25
✎
23:46
|
А так, сама суть, что-то типа этого:
WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1"); WinHttp.Option(2,"utf-8"); WinHttp.SetTimeouts(0, 0, 0, 0); WinHttp.Open("GET","https://api.qvalon.com/v1/orgstruct/divisions ,1); WinHttp.SetRequestHeader ("Authorization", "Bearer " + your_token); Рез = WinHttp.Send(<здесь тело запроса если есть, или "">); |
|||
3
MWWRuza
гуру
27.01.25
✎
23:41
|
Но, вообще, я последнее время постепенно ухожу от использования WinHttp в пользу ВК curl1c.dll (карлик :-))... Как-то меньше с ней проблем.
|
|||
4
Dzenn
гуру
28.01.25
✎
11:12
|
Семёрка, когда проектировалась, и подумать не могла, что её будут так насиловать в старческом возрасте ))
|
|||
5
ChMikle
28.01.25
✎
14:52
|
(4) а почему сразу "насиловать", может быть реализовывать потаенные творческие фантазии :))
|
|||
6
Злопчинский
28.01.25
✎
15:19
|
(5) ;-) Потенция у семерки еще огого!
|
|||
7
Волшебник
28.01.25
✎
15:33
|
(6) хуй вам
|
|||
8
Pit0n_08
28.01.25
✎
16:40
|
(7) Ну пока ещё не 01.01.2037)))
|
|||
9
uno-group
28.01.25
✎
17:04
|
(8) да ладно до 31.12.9999 как-то продержимся, а там уже на новый софт перейдем.
|
|||
10
MWWRuza
гуру
28.01.25
✎
17:10
|
(8) ну, до этого еще дожить надо... Мне, если доживу, будет 71 год... Думаю, вряд-ли меня этот вопрос тогда интересовать будет :-(
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |