Источники:
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);
КонецФункции
|