HTTPСоединение.ОтправитьДляОбработки() - синтаксис кто-нибудь знает?
Всем добрый день!
Есть две версии:
1. HTTPСоединение.ОтправитьДляОбработки(<HTTPЗапрос>, <ИмяВыходногоФайла>) - из синтаксис-помощника, 1С:Предприятие 8.3 (8.3.6.2363)
2. HTTPСоединение.ОтправитьДляОбработки(ФайлЗапроса, "/live/v4/soap/1/",ФайлРезультата, ЗаголовокHTTP) - найдено на просторах интернета
Фишка в том, что второй вариант работает, а первый нет, и как второй работает не понятно (((
Точнее в общих чертах понятно, кроме "/live/v4/soap/1/".
Где бы найти описание синтаксиса? А если еще и примеры использования - вообще будет здорово.
С уважением,
Есть две версии:
1. HTTPСоединение.ОтправитьДляОбработки(<HTTPЗапрос>, <ИмяВыходногоФайла>) - из синтаксис-помощника, 1С:Предприятие 8.3 (8.3.6.2363)
2. HTTPСоединение.ОтправитьДляОбработки(ФайлЗапроса, "/live/v4/soap/1/",ФайлРезультата, ЗаголовокHTTP) - найдено на просторах интернета
Фишка в том, что второй вариант работает, а первый нет, и как второй работает не понятно (((
Точнее в общих чертах понятно, кроме "/live/v4/soap/1/".
Где бы найти описание синтаксиса? А если еще и примеры использования - вообще будет здорово.
С уважением,
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) dj_serega, так что самое интересное, на платформе 8.3.6.2363 пусть и в режиме совместимости с 8.3.5, работает вариант 2, который по идее устарел и работать не должен, а вариант 1 вообще не отсвечивает (может чего конечно не докопал, сейчас буду разбираться) но и ошибок ни каких не дает, как использовать не понятно (((
Самое смешное, что в справке 8.3.5 после объяснения параметров идет код:
// посылаем запрос
ФайлРезультата = ПолучитьИмяВременногоФайла();
Попытка
Соединение.ОтправитьДляОбработки(ИмяФайлаЗапроса, РесурсНаСервере, ФайлРезультата);
Соединение = Неопределено;
Исключение
Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
КонецПопытки;
Показать
вот вам СП:
HTTPСоединение (HTTPConnection)
ОтправитьДляОбработки (Post)
Синтаксис:
ОтправитьДляОбработки(<HTTPЗапрос>, <ИмяВыходногоФайла>)
Параметры:
<HTTPЗапрос> (обязательный)
Тип: HTTPЗапрос.
HTTP-запрос.
<ИмяВыходногоФайла> (необязательный)
Тип: Строка.
Имя выходного файла, в который записываются полученные с сервера данные.
Если не указан или содержит пустую строку, то тело ответа может быть получено из объекта HTTPОтвет.
Возвращаемое значение:
Тип: HTTPОтвет.
Описание:
Отправляет данные на указанный адрес для обработки при помощи HTTP-запроса POST.
Доступность:
Тонкий клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Пример:
HTTPСоединение (HTTPConnection)
ОтправитьДляОбработки (Post)
Синтаксис:
ОтправитьДляОбработки(<HTTPЗапрос>, <ИмяВыходногоФайла>)
Параметры:
<HTTPЗапрос> (обязательный)
Тип: HTTPЗапрос.
HTTP-запрос.
<ИмяВыходногоФайла> (необязательный)
Тип: Строка.
Имя выходного файла, в который записываются полученные с сервера данные.
Если не указан или содержит пустую строку, то тело ответа может быть получено из объекта HTTPОтвет.
Возвращаемое значение:
Тип: HTTPОтвет.
Описание:
Отправляет данные на указанный адрес для обработки при помощи HTTP-запроса POST.
Доступность:
Тонкий клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Пример:
// инициализируем объект для записи XML
ИмяФайлаЗапроса = ПолучитьИмяВременногоФайла();
ОбъектЗапись = Новый ЗаписьXML;
ПараметрыЗаписиXML = Новый ПараметрыЗаписиXML("windows-1251", , Ложь);
ОбъектЗапись.ОткрытьФайл(ИмяФайлаЗапроса, ПараметрыЗаписиXML);
ОбъектЗапись.ЗаписатьОбъявлениеXML();
// выводим корневой элемент Request
ОбъектЗапись.ЗаписатьНачалоЭлемента("Request");
// выводим элемент ClientInfo
ОбъектЗапись.ЗаписатьНачалоЭлемента("ClientInfo");
ОбъектЗапись.ЗаписатьАтрибут("email", АдресОтправителя);
ОбъектЗапись.ЗаписатьКонецЭлемента();
Если ИмяФайлаСертификата <> Неопределено Тогда
// кодируем в Base64 сертификат
ДвДанные.Прочитать(ИмяФайлаСертификата);
ФайлСертификатаBase64 = ДвДанные.ПолучитьСтрокуBase64();
// выводим элемент Certificate
ОбъектЗапись.ЗаписатьНачалоЭлемента("Certificate");
ОбъектЗапись.ЗаписатьТекст(ФайлСертификатаBase64);
ОбъектЗапись.ЗаписатьКонецЭлемента();
КонецЕсли;
Если ИмяФайлаЗашифрованногоКонтейнера <> Неопределено Тогда
// кодируем в Base64 зашифрованный контейнер
ДвДанные.Прочитать(ИмяФайлаЗашифрованногоКонтейнера);
ФайлЗашифрованногоКонтейнераBase64 = ДвДанные.ПолучитьСтрокуBase64();
// выводим элемент Data
ОбъектЗапись.ЗаписатьНачалоЭлемента("Data");
ОбъектЗапись.ЗаписатьТекст(ФайлЗашифрованногоКонтейнераBase64);
ОбъектЗапись.ЗаписатьКонецЭлемента();
КонецЕсли;
// записываем конец для корневого элемента
ОбъектЗапись.ЗаписатьКонецЭлемента();
ОбъектЗапись.Закрыть();
АдресСервераОнлайнПроверки = "onlinefc.taxcom.ru";
РесурсНаСервере = "/online_fc/online_fc.dll" + ?(ПолучитьСертификат, "?IncludeCertificate", "");
// устанавливаем соединение с сервером
Попытка
Соединение = Новый HTTPСоединение(АдресСервераОнлайнПроверки, , , , Прокси);
Исключение
Сообщить("Не удалось установить соединение с сервером онлайн-проверки:"
+ Символы.ПС + ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
Возврат;
КонецПопытки;
// посылаем запрос
Попытка
HTTPЗапрос = Новый HTTPЗапрос(РесурсНаСервере);
HTTPЗапрос.УстановитьИмяФайлаТела(ИмяФайлаЗапроса);
Результат = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
Соединение = Неопределено;
Если Результат.КодСостояния > 299 Тогда
Сообщить("Код состояния " + Результат.КодСостояния + ". Проверка не выполнена");
КонецЕсли;
Исключение
Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
КонецПопытки;
Показать
Подскажите, как правильно переписать новый метод под старый синтаксис (из-за совместимости не воспринимает актуальный метод) и возможно ли это имея только параметр HTTPЗапрос?
HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос) - из синтаксис-помощника, 1С:Предприятие 8.3 (8.3.6.2363)
на:
HTTPСоединение.ОтправитьДляОбработки(ФайлЗапроса, АдресРесурса, ФайлРезультата, ЗаголовокHTTP)
HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос) - из синтаксис-помощника, 1С:Предприятие 8.3 (8.3.6.2363)
на:
HTTPСоединение.ОтправитьДляОбработки(ФайлЗапроса, АдресРесурса, ФайлРезультата, ЗаголовокHTTP)
Может кому пригодится, все получается:
Под новую платформу:
Под старую платформу переписал:
Под новую платформу:
Функция DC_Post(Client, url, data)
SignedUrl = DC_SignUrl(Client, Client.Root + "/" + url);
Запрос = Новый HTTPЗапрос(SignedUrl);
Запрос.УстановитьТелоИзСтроки(data);
Сообщить("DC_Post: Запрос = " + SignedUrl);
Ответ = Client.Connection.ОтправитьДляОбработки(Запрос).ПолучитьТелоКакСтроку(КодировкаТекста.UTF8);
Сообщить("DC_Post: Ответ = " + Ответ);
Возврат Ответ;
КонецФункции
ПоказатьПод старую платформу переписал:
Функция DC_Post(Client, url, data)
SignedUrl = DC_SignUrl(Client, Client.Root + "/" + url);
Запрос = Новый HTTPЗапрос(SignedUrl);
Запрос.УстановитьТелоИзСтроки(data);
Сообщить("DC_Post: Запрос = " + SignedUrl);
ИмяФайлаЗапроса = ПолучитьИмяВременногоФайла();
ФайлОтправки = Новый ЗаписьТекста(ИмяФайлаЗапроса, КодировкаТекста.ANSI, Символы.ПС, Ложь);
ФайлОтправки.ЗаписатьСтроку(data);
ФайлОтправки.Закрыть();
ИмяФайлаРезультата = ПолучитьИмяВременногоФайла();
РесурсНаСервере = Запрос.АдресРесурса;
Заголовки = Запрос.Заголовки;
Ответ = Client.Connection.ОтправитьДляОбработки(ИмяФайлаЗапроса, РесурсНаСервере, ИмяФайлаРезультата, Заголовки);
ФайлОтвета = Новый Файл(ИмяФайлаРезультата);
Если ФайлОтвета.Существует() Тогда
ТекстОтвета = Новый ТекстовыйДокумент();
ТекстОтвета.Прочитать(ИмяФайлаРезультата,КодировкаТекста.UTF8);
Если ТекстОтвета.КоличествоСтрок() > 0 Тогда
ОтветСервера = ТекстОтвета.ПолучитьТекст();
Иначе
Сообщить("Отправка файла на сервер: Получен пустой ответ сервера.");
КонецЕсли;
Иначе
Сообщить("Отправка файла на сервер: Ответ сервера не получен.");
КонецЕсли;
УдалитьФайлы(ИмяФайлаРезультата);
УдалитьФайлы(ИмяФайлаЗапроса);
Возврат ОтветСервера;
КонецФункции
Показать
Подскажите кто сталкивался получают соединение оно вызывает один раз в начале процедуры, по объектно отправляю POST запрос,
через метод ОтправитьДляОбработки, при этом при каждом вызове происходить запись аутентификации в таблицу SQL Sysusersession, можно ли сделать так чтобы запись в эту таблицу не дублировалось, это можно сделать на стороне 1С или SQL?
через метод ОтправитьДляОбработки, при этом при каждом вызове происходить запись аутентификации в таблицу SQL Sysusersession, можно ли сделать так чтобы запись в эту таблицу не дублировалось, это можно сделать на стороне 1С или SQL?
HTTPСоединение = Неопределено;
ЗащищенноеСоединение = Новый ЗащищенноеСоединениеOpenSSL();
HTTPСоединение = Новый HTTPСоединение(НастройкаОбмена.СерверHTTP,,,,,,ЗащищенноеСоединение);
// Дальше код выполняется в цикле. (каждый объект передаётся отдельно)
HTTPЗапрос = Новый HTTPЗапрос(НастройкиОбмена.АдресКоманд+КомандаСерверу);
HTTPЗапрос.Заголовки.Вставить("Content-type", "application/json");
HTTPЗапрос.Заголовки.Вставить("BPMCSRF", Авторизация.BPMCSRF);
HTTPЗапрос.Заголовки.Вставить("Cookie", Авторизация.Cookie);
HTTPЗапрос.УстановитьТелоИзСтроки(ТекстJSON);
ТекстЗапроса = КомандаСерверу+Символы.ПС+ТекстJSON;
HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот