|
Отправка файла .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" в байтах - они совпадут ?
Про кодировки бы узнать и длину в байтах каждого символа |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |