Когда мне потребовалось отправить HTTP/HTTPS POST запрос с параметрами и передачей файла, подходящего и удобного средства не нашел. Пришлось написать небольшой модуль, который, возможно, пригодится кому-нибудь еще.
Есть аналогичный модуль для 1Cv7.7 через MSXML.XMLHTTPRequest, но без поддержки файлов, подготовлю чуть позже.
Для начала требуется получить структуру, описывающую куда и как будем подключаться, функцией РазбитьУРЛ(), возможно дозаполнить свойства.
Далее требуется заполнить соответствия для передачи GET/POST параметров и файлов и вызвать ОтправитьЗапрос()
//Создает структуру и заполняет на основании URL
//Параметры: //Протокол - HTTP или HTTPS
//Порт - по умолчанию 80 для HTTP и 443 для HTTPS
//Безопасное - если протокол HTTPS
//Сервер - имя сервера
//Путь - путь к скрипту/странице на сервере
//СерверИПуть - адрес обращения вида www.server.ru/path/to/query.php
//Пользователь - имя пользователя для Basic авторизации на сайте
//Пароль - пароль пользователя для Basic авторизации
//
//Урл должен быть строкой вида [Протокол://][Пользователь:Пароль@]Сервер[:порт][/Путь]
//Примеры:
//https://server.ru:4001/path/script.php
//http://username:password@server.ru
Функция РазбитьУРЛ(знач урл) Экспорт
//Адрес - структура, которую возвращает функция РазбитьУРЛ()
//_Прокси - опциональные параметры для использования прокси-сервера
// Параметры структуры Прокси
// РежимПрокси - число:
// 0 - не использовать прокси
// 1 - использовать системные установки (по умолчанию)
// 2 - использовать явные настройки прокси
// Пользователь - имя пользователя прокси-сервера
// Пароль - пароль пользователя прокси-сервера
// Сервер - адрес прокси-сервера. Возможно указание порта как сервер:порт
//ГетПараметры,ПостПараметры,Файлы - Соответствия, где Ключ - имя параметра как оно будет передано, Значение - значение параметра или имя файла для передачи
//УдалятьФайлы (булево) - удалять файлы из набора Файлы после передачи. По умолчанию не удалять.
Функция ОтправитьЗапрос(Адрес,знач _Прокси=Неопределено,ГетПараметры=Неопределено,ПостПараметры=Неопределено,Файлы=Неопределено,УдалятьФайлы=Ложь) Экспорт
Возвращает функция структуру со свойствами:
Ошибка - описание ошибки или Неопределено в случае успеха
Ответ - имя временного файла, содержащего ответ сервера. Разработчик должен сам позаботиться о его удалении
Инет - объект HTTPСоединение, который использовался для запроса
Дополнительно:
Функция U2UTF8(стр)
Кодирует строку в UTF-8, возвращая массив байт
Попутно столкнулся с интересной задачей: требуется писать в текстовый файл в кодировке UTF-8, но без BOM-заголовка. Решение: создаем файл в кодировке ANSI, сразу закрываем и открываем на дозапись в UTF-8:
Текст=Новый ЗаписьТекста(ВхИмя,КодировкаТекста.ANSI);
Текст.Закрыть();
Текст=Новый ЗаписьТекста(ВхИмя,КодировкаТекста.UTF8,,Истина);