Пользовать начиная с платформы - 8.3.6
Решение:
Функция ВыполнитьЗапрос(Параметры) Экспорт
Ответ = Новый Структура("Код, ДанныеОтвета",0,"");
//Получим хост
АдресДл = Параметры.УРЛ;
АдресДл = СтрЗаменить(АдресДл, "https://" ,"");
АдресДл = СтрЗаменить(АдресДл, "http://" ,"");
индексСлеша = Найти(АдресДл, "/");
ХОСТ = АдресДл;
Если индексСлеша > 0 Тогда
ХОСТ = Сред(АдресДл, 1 ,индексСлеша - 1);
КонецЕсли;
// вычислить строку URL
длинаСтроки = СтрДлина(АдресДл);
Ресурс = "/" + Прав(АдресДл, длинаСтроки - индексСлеша);
Порт = 80; ssl = Неопределено;
Если Параметры.Свойство("Логин") Тогда
Если Найти(ВРег(Параметры.УРЛ), ВРег("https")) > 0 Тогда
Порт = 443;
ssl = Новый ЗащищенноеСоединениеOpenSSL( неопределено, неопределено );
КонецЕсли;
HTTPСоединение = Новый HTTPСоединение(ХОСТ, Порт,
Параметры.Логин, Параметры.Пароль,,, ssl);
Иначе
HTTPСоединение = Новый HTTPСоединение(ХОСТ,,,,,);
КонецЕсли;
//ФайлЗапроса = ПолучитьИмяВременногоФайла();
// Преобразуем типы платформы в JSON
ТелоЗапроса = Истина;
Если Параметры.Свойство("Тело") Тогда
ТелоЗапроса = Параметры.Тело;
ИначеЕсли Параметры.Свойство("ТелоJSon") Тогда
СтрокаJSON = Новый ЗаписьJSON; СтрокаJSON.УстановитьСтроку();
ЗаписатьJSON(СтрокаJSON, Параметры.ТелоJSon);
ТелоЗапроса = СтрокаJSON.Закрыть();
КонецЕсли;
КодСостояния = 0;
ОтветСервера = "";
ЗаголовокHTTP = Новый Соответствие();
ЗаголовокHTTP.Вставить("Host", Хост);
Если Параметры.Свойство("Заголовок") Тогда
Для Каждого ЭлементЗ из Параметры.Заголовок Цикл
ЗаголовокHTTP.Вставить(ЭлементЗ.Парам, ЭлементЗ.Знч);
КонецЦикла;
КонецЕсли;
Попытка
ФайлОтвета = Неопределено;
Если (Параметры.Свойство("ЧерезФайл")) Тогда
ФайлОтвета = ПолучитьИмяВременногоФайла(Параметры.ЧерезФайл);
КонецЕсли;
HTTPЗапрос = Новый HTTPЗапрос(Ресурс, ЗаголовокHTTP);
HTTPЗапрос.УстановитьТелоИзСтроки(ТелоЗапроса, КодировкаТекста.UTF8);
Если ((Параметры.Свойство("Способ")) и (Врег(Параметры.Способ) = "POST"))
или
(Параметры.Свойство("Тело")) или (Параметры.Свойство("ТелоJSon"))
Тогда
Если (Параметры.Свойство("ЧерезФайл")) Тогда
HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос, ФайлОтвета);
Иначе
HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
КонецЕсли;
Иначе
HTTPОтвет = HTTPСоединение.Получить(HTTPЗапрос);
КонецЕсли;
ДанныеОтвета = "";
Ответ.Вставить("Код", HTTPОтвет.КодСостояния);
Если Ответ.Код = 200 Тогда
Если (Параметры.Свойство("ЧерезФайл")) Тогда
Если Параметры.Свойство("ОтветJSON") Тогда
Чтение = Новый ЧтениеJSON;
Чтение.ОткрытьФайл(ФайлОтвета);
ДанныеОтвета = ПрочитатьJSON(Чтение, Ложь);
Чтение.Закрыть();
Иначе
Файл = Новый ЧтениеТекста(ФайлОтвета);
ДанныеОтвета = Файл.Прочитать();
Файл.Закрыть();
КонецЕсли;
Попытка
УдалитьФайлы(ФайлОтвета);
Исключение
КонецПопытки;
Иначе
Если Параметры.Свойство("ОтветJSON") Тогда
ДанныеОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(ДанныеОтвета);
ДанныеОтвета = ПрочитатьJSON(Чтение, Ложь);
Чтение.Закрыть();
Иначе
ДанныеОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
КонецЕсли;
КонецЕсли;
КонецЕсли;
Ответ.Вставить("ДанныеОтвета", ДанныеОтвета);
Исключение
Сообщить("Не удалось установить соединение с сервером :"
+ Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
КонецПопытки;
Возврат Ответ;
КонецФункции
Пример вызова:
параметры:
Заголовок - Если нужен хитрый заголовок, указываем свои параметры, см. ниже.
УРЛ - Полный путь к ресурсу
Логин/Пароль - Пользовать парой, указывает на работут через basic authentication
ОтветJSON - Просим преобразовать ответ в струкруты, массивы, объекты 1С
ЧерезФайл - Указывает принять запрос через файл. (для большого ответа. Например последующее чтение JSON)
Заголовок = Новый Массив();
Заголовок.Добавить( Новый Структура("Парам, Знч", "Content-Type", "application/json") );
Заголовок.Добавить( Новый Структура("Парам, Знч", "Accept", "application/json; utf-8;") );
Заголовок.Добавить( Новый Структура("Парам, Знч", "Accept-Charset", "utf-8;") );
Парам = новый Структура();
Парам.Вставить("Заголовок", Заголовок);
Парам.Вставить("УРЛ", "https://www.google.ru"+"/?gfe_rd=cr&ei=L3ByV96dD-KWwAPrloEg&gws_rd=ssl#newwindow=1&q=Василий Алибабаевич");
ОтветСодержимое = ВыполнитьЗапрос(Парам);