Коллеги, доброго времени суток!
Возникла проблема отправки POST-запроса с присоединенным звуковым файлом из 1С.
На другой стороне запрос принимает обработчик, реализованный в виде HTTP-сервиса,
который должен этот файл принять и записать на диск своего сервера.
Когда отправляю запрос без вложения, запрос отрабатывает без ошибок -
функция Ответ.ПолучитьТелоКакСтроку() возвращает тестовую строку.
Для отправки запроса с вложением файла пробовал разные способы:
Вариант 1:
В результате получилось: КодСостояния = 200,
но в строке ТелоОтвета вернулась строка "No file part in the request"
Вариант 2 - передавал в теле запроса не путь к файлу, а двоичные данные:
В результате то же самое: КодСостояния = 200,
в строке ТелоОтвета - "No file part in the request"
Вариант 3 - передавал двоичные данные, преобразованные в строку:
Снова то же самое: КодСостояния = 200,
в строке ТелоОтвета - "No file part in the request"
Подскажите, пожалуйста, в чем может быть проблема, что я делаю неправильно?
Возникла проблема отправки POST-запроса с присоединенным звуковым файлом из 1С.
На другой стороне запрос принимает обработчик, реализованный в виде HTTP-сервиса,
который должен этот файл принять и записать на диск своего сервера.
Когда отправляю запрос без вложения, запрос отрабатывает без ошибок -
функция Ответ.ПолучитьТелоКакСтроку() возвращает тестовую строку.
Для отправки запроса с вложением файла пробовал разные способы:
Вариант 1:
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/json");
СтрокаПодключения = "http://хх.ххх.ххх.х:ххххх/api/<ПутьНаСервере>";
ИмяФайла = "Полное_Имя_Файла.WAV";
ПараметрыЗапроса = Новый Структура;
ПараметрыЗапроса.Вставить("audio", "@" + ИмяФайла);
ЗаписьJSON = Новый ЗаписьJSON();
ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписи);
ЗаписатьJSON(ЗаписьJSON, ПараметрыЗапроса);
СтрЗапрос = ЗаписьJSON.Закрыть();
//Пробовал с этим оператором, и без него
СтрЗапрос = СтрЗаменить(СтрЗапрос, "\\", "\");
HTTPЗапрос = Новый HTTPЗапрос("/");
HTTPЗапрос.Заголовки = Заголовки;
HTTPСоединение = Новый HTTPСоединение("хх.ххх.ххх.х", "ххххх");
HTTPЗапрос.АдресРесурса = "/" + СтруктураURI.<ПутьНаСервере>;
HTTPЗапрос.УстановитьТелоИзСтроки(СтрЗапрос);
Попытка
HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
ТелоОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
КодСостояния = Ответ.КодСостояния;
Исключение
ООШ = ОписаниеОшибки();
КонецПопытки;
ПоказатьВ результате получилось: КодСостояния = 200,
но в строке ТелоОтвета вернулась строка "No file part in the request"
Вариант 2 - передавал в теле запроса не путь к файлу, а двоичные данные:
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/json");
СтрокаПодключения = "http://хх.ххх.ххх.х:ххххх/api/<ПутьНаСервере>";
ИмяФайла = "Полное_Имя_Файла.WAV";
ДвДанные = Новый ДвоичныеДанные(ИмяФайла);
HTTPЗапрос = Новый HTTPЗапрос("/");
HTTPЗапрос.Заголовки = Заголовки;
HTTPСоединение = Новый HTTPСоединение("хх.ххх.ххх.х", "ххххх");
HTTPЗапрос.АдресРесурса = "/" + СтруктураURI.<ПутьНаСервере>;
HTTPЗапрос.УстановитьТелоИзДвоичныхДанных(ДвДанные);
Попытка
HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
ТелоОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
КодСостояния = Ответ.КодСостояния;
Исключение
ООШ = ОписаниеОшибки();
КонецПопытки;
ПоказатьВ результате то же самое: КодСостояния = 200,
в строке ТелоОтвета - "No file part in the request"
Вариант 3 - передавал двоичные данные, преобразованные в строку:
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "application/json");
СтрокаПодключения = "http://хх.ххх.ххх.х:ххххх/api/<ПутьНаСервере>";
ИмяФайла = "Полное_Имя_Файла.WAV";
ДвДанные = Новый ДвоичныеДанные(ИмяФайла);
ДвДанныеСтрока = Base64Строка(РезДД);
ПараметрыЗапроса = Новый Структура;
ПараметрыЗапроса.Вставить("audio", ДвДанныеСтрока);
ЗаписьJSON = Новый ЗаписьJSON();
ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписи);
ЗаписатьJSON(ЗаписьJSON, ПараметрыЗапроса);
СтрЗапрос = ЗаписьJSON.Закрыть();
HTTPЗапрос = Новый HTTPЗапрос("/");
HTTPЗапрос.Заголовки = Заголовки;
HTTPСоединение = Новый HTTPСоединение("хх.ххх.ххх.х", "ххххх");
HTTPЗапрос.АдресРесурса = "/" + СтруктураURI.<ПутьНаСервере>;
HTTPЗапрос.УстановитьТелоИзСтроки(СтрЗапрос);
Попытка
HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
ТелоОтвета = HTTPОтвет.ПолучитьТелоКакСтроку();
КодСостояния = Ответ.КодСостояния;
Исключение
ООШ = ОписаниеОшибки();
КонецПопытки;
ПоказатьСнова то же самое: КодСостояния = 200,
в строке ТелоОтвета - "No file part in the request"
Подскажите, пожалуйста, в чем может быть проблема, что я делаю неправильно?
По теме из базы знаний
- Передача файлов и данных на веб-сервер средствами 1С:Предприятие 8.X методом POST
- 1С + PHP + JavaScript + AJAX. Основы технологий удаленного взаимодействия
- HTTP POST запрос к УТМ системы ЕГАИС
- Обмен данными с приложениями Simple с помощью скрипта-шины
- Развертывание Docker с Flask + Tesseract и взаимодействие с 1С: Документооборот на примере версии 1.4
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот