| 
    
            
         
         | 
    
    
  | 
Отправка файла .xml POST запросом | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        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); СтрокаОтветаСервера = ТекстовыйФайлОтвета.ПолучитьТекст(); КонецПроцедуры  | 
|||
| 
    1
    
        Garykom    
     гуру 
    16.08.19 
            ✎
    13:34 
 | 
         
        (0) Не понял проблемы.
 
        Если файл XML не большой то строку посылай внутри которой содержимое XML.  | 
|||
| 
    2
    
        bvb    
     16.08.19 
            ✎
    13:36 
 | 
         
        (1) В примере его перекодируют :
 
        ТекстФайл = Новый ТекстовыйДокумент; ТекстФайл.УстановитьТекст(ФайлТелаЗапроса); ТекстФайл.Записать(ФайлТелаЗапроса, КодировкаТекста.ANSI);  | 
|||
| 
    3
    
        dka80    
     16.08.19 
            ✎
    13:37 
 | 
         
        УстановитьТелоИзСтроки     
         | 
|||
| 
    4
    
        Garykom    
     гуру 
    16.08.19 
            ✎
    13:50 
 | 
         
        (2) Могу продать СП, очень дорого.
 
        ТекстовыйДокумент.УстановитьТекст("Блабла"); ТекстовыйДокумент.УстановитьТипФайла("UTF-8"); Текст = ТекстовыйДокумент.ПолучитьТекст();  | 
|||
| 
    5
    
        bvb    
     16.08.19 
            ✎
    14:13 
 | 
         
        (4) Я так понял там временный файл нужен для определения размера сообщения
 
        Это критично ?  | 
|||
| 
    6
    
        Garykom    
     гуру 
    16.08.19 
            ✎
    14:34 
 | 
         
        (5) Эээ даже не знаем как длину строки глянуть?     
         | 
|||
| 
    7
    
        bvb    
     16.08.19 
            ✎
    14:41 
 | 
         
        (6) Я к тому что у меня может быть достаточно большой хмл.
 
        Может в этом случае его действительно лучше класть в текстовик ?  | 
|||
| 
    8
    
        Garykom    
     гуру 
    16.08.19 
            ✎
    14:44 
 | 
         
        (7) Смотря для чего "лучше".
 
        Очень большой xml и память может кончиться, зато быстрее без записи на диск и его ресурс не тратится.  | 
|||
| 
    9
    
        bvb    
     16.08.19 
            ✎
    15:21 
 | 
         
        (8) У меня вот пример - 70 метров
 
        (6) Длина строки в символах а размер "Content-Length" в байтах - они совпадут ?  | 
|||
| 
    10
    
        eklmn    
     гуру 
    16.08.19 
            ✎
    15:28 
 | 
         
        мммм XML говоришь..."Content-Type", "application/json     
         | 
|||
| 
    11
    
        Garykom    
     гуру 
    16.08.19 
            ✎
    15:28 
 | 
         
        (10) Думаю все интереснее и там xml внутри json     
         | 
|||
| 
    12
    
        Garykom    
     гуру 
    16.08.19 
            ✎
    15:29 
 | 
         
        (9) >Длина строки в символах а размер "Content-Length" в байтах - они совпадут ?
 
        Про кодировки бы узнать и длину в байтах каждого символа  | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |