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

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

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