Приветствую Вас ГостьПятница, 03.05.2024, 18:51

Каталог статей


HTTP Сервисы

Источники: 

https://infostart.ru/1c/articles/516810/

https://1c-programmer-blog.ru/programmirovanie/json-v-1s.html

Пример подключения по http-сервису:

Параметры подключения - это структура:

  • Сервер
  • Порт (обычно 80)
  • Пользователь
  • Пароль
  • ИмяПубликации

 

РезультатЗапроса = ОтправитьЗапросHTTP(ПараметрыПодключения, ПараметрыПодключения.ИмяПубликации + "/GETRests", СформироватьСтрокуДанныхJSON(ПараметрыЗапроса));

Если РезультатЗапроса.Ошибка Тогда 
        //РезультатСтрока = "Код состояния: " + Строка(РезультатЗапроса.КодСостояния) + Символы.ПС + РезультатЗапроса.ТекстОшибки + Символы.ПС + РезультатЗапроса.ТекстОтвета;
        ВывестиВЖурнал("Ошибка получения данных. Код состояния: " + Строка(РезультатЗапроса.КодСостояния) + ". " + РезультатЗапроса.ТекстОшибки + ". " + РезультатЗапроса.ТекстОтвета, ИзФормы, Истина);
        Возврат Результат;
КонецЕсли;
    
РезультатСтрока = РезультатЗапроса.ТекстОтвета;
РезультатДанные = ПолучитьДанныеСтрокиJSON(РезультатСтрока);

...

&НаСервере
Функция ОтправитьЗапросHTTP(ПараметрыПодключения, АдресРесурса, ТелоЗапроса = "", ДополнительныеЗаголовки = Неопределено, ПараметрыАдреснойСтроки = Неопределено, ДвоичныеДанныеВОтвете = Ложь)
    
    Результат = Новый Структура;
    Результат.Вставить("Ошибка", Ложь);
    Результат.Вставить("ТекстОшибки", "");
    Результат.Вставить("КодСостояния", 0);
    Результат.Вставить("ТекстОтвета", "");
    
    ТекстОшибки = "";
    
    Заголовки = Новый Соответствие;
    Заголовки.Вставить("Content-type", "application/json");
    
    Если Не ДополнительныеЗаголовки = Неопределено Тогда 
        Для Каждого КлючИЗначение Из ДополнительныеЗаголовки Цикл 
            Заголовки.Вставить(КлючИЗначение.Ключ, КлючИЗначение.Значение);
        КонецЦикла;
    КонецЕсли;
    
    HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, Заголовки);
    
    Если ЗначениеЗаполнено(ТелоЗапроса) Тогда 
        HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса, "UTF-8");
    КонецЕсли;
    
    Попытка 
        
        HTTPСоединение = Новый HTTPСоединение(ПараметрыПодключения.Сервер, ПараметрыПодключения.Порт, ПараметрыПодключения.Пользователь, ПараметрыПодключения.Пароль,,,); 
        HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
        //HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос);    
        
    Исключение
        
        ТекстОшибки = ОписаниеОшибки();
        HTTPОтвет = Неопределено;
        
    КонецПопытки;
    
    Если HTTPОтвет = Неопределено Тогда
        Результат.Вставить("Ошибка", Истина);
        Результат.Вставить("ТекстОшибки", ТекстОшибки);
        Возврат Результат;
    КонецЕсли;
    
    Попытка
        Результат.Вставить("КодСостояния", HTTPОтвет.КодСостояния);
        Результат.Вставить("ТекстОтвета", HTTPОтвет.ПолучитьТелоКакСтроку());
    Исключение
    КонецПопытки;
    
    Если HTTPОтвет.КодСостояния <> 200 Тогда
        ТекстОшибки = НСтр("ru = 'Соединение не установлено! Код состояния: " + Строка(HTTPОтвет.КодСостояния) + "'");
        Результат.Вставить("Ошибка", Истина);
        Результат.Вставить("ТекстОшибки", ТекстОшибки);
        Возврат Результат;
    КонецЕсли;
    
    Возврат Результат;
    // РезультатДанные - Массив структур 
    
КонецФункции

&НаСервере
Функция СформироватьСтрокуДанныхJSON(Данные) 
    
    ЗаписьJSON = Новый ЗаписьJSON; 
    ЗаписьJSON.УстановитьСтроку(); 
    ЗаписатьJSON(ЗаписьJSON, Данные); 
    Возврат ЗаписьJSON.Закрыть();
    
КонецФункции

&НаСервере
Функция ПолучитьДанныеСтрокиJSON(СтрокаJSON) 
    
    Если Не ЗначениеЗаполнено(СтрокаJSON) Тогда 
        Возврат Неопределено;
    КонецЕсли;
    
    ЧтениеJSON = Новый ЧтениеJSON;
    ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
    
    Возврат ПрочитатьJSON(ЧтениеJSON);
    
КонецФункции

 

Категория: Взаимодействие с другими базами, приложениями и источниками данных | Добавил: leshic (27.04.2021)
Просмотров: 175 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Вход на сайт
Поиск
Категории раздела
СКД [48]
Регистры [7]
Формы [40]
Администрирование [34]
Запросы [10]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [29]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0