Вход | Регистрация
 

Отправка файла .xml POST запросом

Отправка файла .xml   POST запросом
Я
   bvb
 
16.08.19 - 13:27
Просьба не глумится ибо звучит все конечно смешно
Сопрягаюсь с чудной WMS системой.
Работаю как водится ваще без ТЗ
Лимит времени естественно ограничен
В REST шарю на уровне общих понятий

Сформировал XML файл для отправки POST запросом
ПутьКФайлуXML = Новый Файл("test.xml");
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл(ПутьКФайлуXML.ПолноеИмя);

Имею URL :  http://192.168.20.12:7000/cwms/ws/NOM.DEV
Нужно отправить туда мой хмл и получить текст флеш-бек ответа для последующей обработки

Как это сделать с минимальными телодвижениями (без создания временного текстового файла, перекодировки в нем и т.п. ) ?

За образец имею :
Процедура ВыполнитьPOSTЗапрос(Команда, СсылкаНаРесурс)
    
    // Создаем новое HTTP соединение с указанием сервера
    // Последний параметр отвечает за использование защищенного соединения
    HTTP = Новый HTTPСоединение(ИмяСервера,,,,,Истина);
    
    // Получим временный файл для передачи в теле POST запроса
    ФайлТелаЗапроса = ПолучитьИмяВременногоФайла();
    
    // Запишем в файл содержимое тела запроса (текст)
    ТекстФайл = Новый ТекстовыйДокумент;
    ТекстФайл.УстановитьТекст(ФайлТелаЗапроса);
    ТекстФайл.Записать(ФайлТелаЗапроса, КодировкаТекста.ANSI);
    
    // Получим размер данных для передачи в заголовок
    ФайлНаОтправку = Новый Файл(ФайлТелаЗапроса);
    РазмерФайлаНаОтправку = XMLСтрока(ФайлНаОтправку.Размер());
    
    // Получим временный файл — тело ответа POST запроса
    ФайлРезультат = ПолучитьИмяВременногоФайла();
    
    // Заголовок создадим в виде соответствия
    ЗаголовокЗапросаHTTP = Новый Соответствие();
    
    // Передаем в заголовках размер и тип данных на отправку
    ЗаголовокЗапросаHTTP.Вставить("Content-Length", РазмерФайлаНаОтправку);
    ЗаголовокЗапросаHTTP.Вставить("Content-Type", "application/json; charset=utf-8");
    
    // Отсылаем POST запрос на обработку.
    // СсылкаНаРесурс — ссылка на веб-сервер (страницу), к которой посылается POST запрос
    HTTP.ОтправитьДляОбработки(ФайлТелаЗапроса, СсылкаНаРесурс, ФайлРезультат, ЗаголовокЗапросаHTTP);
    
    // Получим ответ
    ТекстовыйФайлОтвета = Новый ТекстовыйДокумент;
    ТекстовыйФайлОтвета.Прочитать(ФайлРезультат, КодировкаТекста.UTF8);
    СтрокаОтветаСервера = ТекстовыйФайлОтвета.ПолучитьТекст();
    
КонецПроцедуры
 
 
   Garykom
 
1 - 16.08.19 - 13:34
(0) Не понял проблемы.
Если файл XML не большой то строку посылай внутри которой содержимое XML.
   bvb
 
2 - 16.08.19 - 13:36
(1) В примере его перекодируют :

    ТекстФайл = Новый ТекстовыйДокумент; 
    ТекстФайл.УстановитьТекст(ФайлТелаЗапроса); 
    ТекстФайл.Записать(ФайлТелаЗапроса, КодировкаТекста.ANSI);
   dka80
 
3 - 16.08.19 - 13:37
УстановитьТелоИзСтроки
   Garykom
 
4 - 16.08.19 - 13:50
(2) Могу продать СП, очень дорого.

ТекстовыйДокумент.УстановитьТекст("Блабла");
ТекстовыйДокумент.УстановитьТипФайла("UTF-8");
Текст = ТекстовыйДокумент.ПолучитьТекст();
   bvb
 
5 - 16.08.19 - 14:13
(4) Я так понял там временный файл нужен для определения размера сообщения

Это критично ?
   Garykom
 
6 - 16.08.19 - 14:34
(5) Эээ даже не знаем как длину строки глянуть?
   bvb
 
7 - 16.08.19 - 14:41
(6) Я к тому что у меня может быть достаточно большой хмл.
Может в этом случае его действительно лучше класть в текстовик ?
   Garykom
 
8 - 16.08.19 - 14:44
(7) Смотря для чего "лучше".
Очень большой xml и память может кончиться, зато быстрее без записи на диск и его ресурс не тратится.
   bvb
 
9 - 16.08.19 - 15:21
(8) У меня вот пример - 70 метров

(6) Длина строки в символах а размер "Content-Length" в байтах - они совпадут ?
   eklmn
 
10 - 16.08.19 - 15:28
мммм XML говоришь..."Content-Type", "application/json
   Garykom
 
11 - 16.08.19 - 15:28
(10) Думаю все интереснее и там xml внутри json
   Garykom
 
12 - 16.08.19 - 15:29
(9) >Длина строки в символах а размер "Content-Length" в байтах - они совпадут ?

Про кодировки бы узнать и длину в байтах каждого символа

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.