HTTPСоединение.ОтправитьДляОбработки() - синтаксис кто-нибудь знает?

1. Win98 31.05.16 17:05 Сейчас в теме
Всем добрый день!

Есть две версии:
1. HTTPСоединение.ОтправитьДляОбработки(<HTTPЗапрос>, <ИмяВыходногоФайла>) - из синтаксис-помощника, 1С:Предприятие 8.3 (8.3.6.2363)
2. HTTPСоединение.ОтправитьДляОбработки(ФайлЗапроса, "/live/v4/soap/1/",ФайлРезультата, ЗаголовокHTTP) - найдено на просторах интернета

Фишка в том, что второй вариант работает, а первый нет, и как второй работает не понятно (((
Точнее в общих чертах понятно, кроме "/live/v4/soap/1/".

Где бы найти описание синтаксиса? А если еще и примеры использования - вообще будет здорово.

С уважением,
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. dj_serega 394 31.05.16 17:11 Сейчас в теме
(1) Win98, 1. На платформах 8.3. (или с 8.2.17 вроде).
2. До 8.2.17.

Релизы написал по памяти.
6. Win98 01.06.16 08:25 Сейчас в теме
(2) dj_serega, так что самое интересное, на платформе 8.3.6.2363 пусть и в режиме совместимости с 8.3.5, работает вариант 2, который по идее устарел и работать не должен, а вариант 1 вообще не отсвечивает (может чего конечно не докопал, сейчас буду разбираться) но и ошибок ни каких не дает, как использовать не понятно (((
7. PetroP 01.06.16 10:04 Сейчас в теме
(6) Win98, в таком случае старый вариант синтаксиса "оставлен для совместимости". Описание старого варианта должно быть в СП версии 8.2.17.
3. PetroP 31.05.16 17:44 Сейчас в теме
(1) Win98,
Где бы найти описание синтаксиса?

Смотрите в какой версии режима совместимости работает конфигурация. Устанавливаете платформу данной версии. Открываете СП. Профит.
4. Win98 01.06.16 08:18 Сейчас в теме
(3) PetroP, режим совместимости 8.3.5, платформа 8.3.6.2363.
А СП ни где на сайте 1С или каком стороннем не выложен?
5. ётун 01.06.16 08:22 Сейчас в теме
А СП ни где на сайте 1С или каком стороннем не выложен?

(4) Win98, большое, человеческое спасибо за утреннее настроение!
8. Xershi 1534 01.06.16 10:16 Сейчас в теме
Самое смешное, что в справке 8.3.5 после объяснения параметров идет код:
// посылаем запрос
ФайлРезультата = ПолучитьИмяВременногоФайла();
Попытка
    Соединение.ОтправитьДляОбработки(ИмяФайлаЗапроса, РесурсНаСервере, ФайлРезультата);
    Соединение = Неопределено;
Исключение
    Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
КонецПопытки;

Показать
9. ЧерныйКот 01.06.16 10:22 Сейчас в теме
вот вам СП:

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 Тогда
       Сообщить("Код состояния " + Результат.КодСостояния + ". Проверка не выполнена");
    КонецЕсли;
Исключение
    Сообщить(ИнформацияОбОшибке().Описание, СтатусСообщения.Важное);
КонецПопытки;
Показать
10. Xershi 1534 01.06.16 10:25 Сейчас в теме
В 1С:Предприятие 8.3 (8.3.7.2008) уже исправили походу и работает так как в (9). Так что обновите платформу и будет вам счастье.
11. Azzkijhacker 09.03.21 12:52 Сейчас в теме
Подскажите, как правильно переписать новый метод под старый синтаксис (из-за совместимости не воспринимает актуальный метод) и возможно ли это имея только параметр HTTPЗапрос?

HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос) - из синтаксис-помощника, 1С:Предприятие 8.3 (8.3.6.2363)

на:

HTTPСоединение.ОтправитьДляОбработки(ФайлЗапроса, АдресРесурса, ФайлРезультата, ЗаголовокHTTP)
12. Поручик 4669 09.03.21 13:34 Сейчас в теме
13. Azzkijhacker 12.03.21 15:54 Сейчас в теме
Может кому пригодится, все получается:

Под новую платформу:

Функция 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 Тогда 
            ОтветСервера = ТекстОтвета.ПолучитьТекст(); 
        Иначе 
            Сообщить("Отправка файла на сервер: Получен пустой ответ сервера."); 
        КонецЕсли; 
            
    Иначе 
        Сообщить("Отправка файла на сервер: Ответ сервера не получен."); 
    КонецЕсли; 
    
    УдалитьФайлы(ИмяФайлаРезультата); 
    УдалитьФайлы(ИмяФайлаЗапроса);
    
    Возврат ОтветСервера;
    
КонецФункции

Показать
evakuzmina; shima; +2 Ответить
14. berezin84 21.12.21 12:08 Сейчас в теме
Подскажите кто сталкивался получают соединение оно вызывает один раз в начале процедуры, по объектно отправляю POST запрос,
через метод ОтправитьДляОбработки, при этом при каждом вызове происходить запись аутентификации в таблицу 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Запрос);


Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот