Использование REST API со стороны 1с
Вызов
Процедура
Вызов
Результат = ПорталПротейНаСервере.WorkerBasic("GET", httpResponse, Отладка);
Процедура
&НаСервере Функция WorkerBasic(ТипЗапроса, httpResponse, Отладка) Export //Типи запросов: POST, GET, PUL, DELETE companycode = ПорталПротейНаСервере.КодКомпании(); ПараметрГЕТ = ""; Если ТипЗапроса="POST" Тогда httpResponse = httpResponse; Адрес = "/api/worker/add.worker"; ИначеЕсли ТипЗапроса="PUT" Тогда httpResponse = httpResponse; Адрес = "/api/worker/update.worker"; ИначеЕсли ТипЗапроса="DELETE" Тогда ПараметрГЕТ = "?externalId=" + httpResponse + "&companyCode=" + CompanyCode; Адрес = "/api/worker/delete.worker"; ИначеЕсли ТипЗапроса="GET" Тогда ПараметрГЕТ = "?id=" + httpResponse + "&companyCode=" + CompanyCode; Адрес = "/api/worker/get.worker"; КонецЕсли; Попытка АдресСтраницыНаСервере = Адрес + ПараметрГЕТ; // ЗАПРОС ЗащищенноеСоединение=Ложь; Таймаут=30; // ждем ответ от сервера 30 сек СерверПриемник = "newportal.protei:8090"; //имя сервера ЗаголовкиHTTP = Новый Соответствие; ЗаголовкиHTTP.Вставить("Content-Type", "application/xml"); SSL = ?(ЗащищенноеСоединение, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено); НТТР = Новый HTTPСоединение(СерверПриемник, , , , , Таймаут, SSL); резутатПолучен=Ложь; Попытка //Формируем HTTP запрос ЗапросHTTP = Новый HTTPЗапрос(АдресСтраницыНаСервере, ЗаголовкиHTTP); //Устанавливает строку, из которого будет прочитано тело POST-запроса. ЗапросHTTP.УстановитьТелоИзСтроки(httpResponse); //Ответ от сервера получим в возвращаемом значении типа HTTPОтвет Если ТипЗапроса="GET" Тогда ОтветHTTP = НТТР.ВызватьHTTPМетод("GET",ЗапросHTTP); ИначеЕсли ТипЗапроса="POST" Тогда ОтветHTTP = НТТР.ВызватьHTTPМетод("POST",ЗапросHTTP); ИначеЕсли ТипЗапроса="PUT" Тогда ОтветHTTP = НТТР.ВызватьHTTPМетод("PUT",ЗапросHTTP); ИначеЕсли ТипЗапроса="DELETE" Тогда ОтветHTTP = НТТР.ВызватьHTTPМетод("DELETE",ЗапросHTTP); Иначе ВызватьИсключение("Неизвестный запрос: "+ТипЗапроса+"!"); КонецЕсли; резутатПолучен=Истина; Исключение ТекстСообщения = НСтр("ru = 'Неудачная попытка соединения с '") + СерверПриемник + ": " + ОписаниеОшибки(); Если Отладка = Истина Тогда Сообщить("ПЛОХО "+ТекстСообщения); КонецЕсли; Логгер(ТипЗапроса, АдресСтраницыНаСервере, "ПЛОХО "+ТекстСообщения); КонецПопытки; ПолученныеДанные=""; Если Отладка = Истина Тогда //Сообщить ("StatusCode = " + ОтветHTTP.КодСостояния); КонецЕсли; Если резутатПолучен Тогда Если ОтветHTTP.КодСостояния = 200 Тогда // теперь можно разбирать ответ ЗаголовкиHTTP = ОтветHTTP.Заголовки; ЗаголовкиHTTP.Вставить("StatusCode", ОтветHTTP.КодСостояния); ПолученныеДанные = ОтветHTTP.ПолучитьТелоКакСтроку(); Иначе Если Отладка = Истина Тогда Сообщить(ОтветHTTP.ПолучитьТелоКакСтроку()); КонецЕсли; КонецЕсли; Логгер(ТипЗапроса + АдресСтраницыНаСервере + httpResponse , "StatusCode = " + ОтветHTTP.КодСостояния, ПолученныеДанные); КонецЕсли; //Возврат ПолученныеДанные; //Сообщить(ПолученныеДанные); Возврат (ПолученныеДанные); Исключение ТекстОшибки = ОписаниеОшибки(); Если Отладка = Истина Тогда Сообщить(ОписаниеОшибки()); КонецЕсли; Логгер("PUT ", "error", ТекстОшибки ); КонецПопытки КонецФункции
Комментариев нет:
Отправить комментарий