Проблема с отправкой HTTP POST multipart/from-data

1. Dana_K 03.06.23 01:19 Сейчас в теме
Доброе время суток! Коллеги, кто встречал такую ошибку? Вроде простой запрос. Нужно отправить файл. Просмотрела все примеры, как только не пробовала, получаю один и тот же ответ 400 "{"errors":{"":["Failed to read the request form. Line length limit 16384 exceeded."]},"



РазделительСтрок="test";

ПотокВПамяти = Новый ПотокВПамяти();
ЗаписьДанных = Новый ЗаписьДанных(ПотокВПамяти);
ЗаписьДанных.ЗаписатьСтроку("--" + РазделительСтрок);
ЗаписьДанных.Записать(ДвоичныеДанные);
//ЗаписьДанных.ЗаписатьСтроку("");

ЗаписьДанных.ЗаписатьСтроку("--" + РазделительСтрок+ "--");
ЗаписьДанных.Закрыть();

ТелоЗапроса = ПотокВПамяти.ЗакрытьИПолучитьДвоичныеДанные();

Заголовки = Новый Соответствие();
Заголовки.Вставить("Content-Type","multipart/form-data; boundary=" + РазделительСтрок);

Запрос = Новый HTTPЗапрос("api/file", Заголовки);
Запрос.УстановитьТелоИзДвоичныхДанных(ТелоЗапроса);


Token = ПолучитьТокенBnNet();
Запрос.Заголовки.Вставить("Authorization", "Bearer "+Token);

SSL = Новый ЗащищенноеСоединениеOpenSSL;

Соединение =Новый HTTPСоединение(АдресСервисаPartners,,,,,,SSL);


Ответ = Соединение.ОтправитьДляОбработки(Запрос);


Сообщить(Ответ.КодСостояния);
ссответа = Ответ.ПолучитьТелоКакСтроку("UTF-8");
Сообщить(ссответа);
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user-z99999 68 03.06.23 13:09 Сейчас в теме
Отсылаем две картинки, пример

 Соединение = Новый HTTPСоединение("server.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);

&НаКлиенте
Процедура Проверить3(Команда)
 //подготавливаем вложенные сообщения
 ДвоичныеДанные1 = ПодготовитьКартинку("image1", "image1.png", БиблиотекаКартинок.АктивироватьЗадачу);
 ДвоичныеДанные2 = ПодготовитьКартинку("image2", "image2.png", БиблиотекаКартинок.АктивныеПользователи);
 
 Разделитель = "boundary";
 
 //устанавливаем заголовки основного сообщения
 Заголовки = Новый Соответствие();
 Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=" + Разделитель);
 
 //формируем основное сообщение
 ПотокВПамяти = Новый ПотокВПамяти();
 ЗаписьДанных = Новый ЗаписьДанных(ПотокВПамяти);
 
 ЗаписьДанных.ЗаписатьСтроку("--"+Разделитель);
 ЗаписьДанных.Записать(ДвоичныеДанные1);
 ЗаписьДанных.ЗаписатьСтроку("");
 
 ЗаписьДанных.ЗаписатьСтроку("--"+Разделитель);
 ЗаписьДанных.Записать(ДвоичныеДанные2);
 ЗаписьДанных.ЗаписатьСтроку("");
 
 ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель + "--");
 ЗаписьДанных.Закрыть();
 
 ТелоЗапроса = ПотокВПамяти.ЗакрытьИПолучитьДвоичныеДанные();
 
 //отправляем данные скрипту
 Соединение = Новый HTTPСоединение("server.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
 
 Запрос = Новый HTTPЗапрос("/script.php", Заголовки);
 Запрос.УстановитьТелоИзДвоичныхДанных(ТелоЗапроса);
 
 Ответ = Соединение.ОтправитьДляОбработки(Запрос);
 
 Сообщить(Ответ.ПолучитьТелоКакСтроку());
КонецПроцедуры
 
&НаКлиенте
Функция ПодготовитьКартинку(Название, ИмяФайла, Картинка)
 Поток = Новый ПотокВПамяти();
 ЗаписьДанных = Новый ЗаписьДанных(Поток);
 
 //устанавливаем заголовки
 ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=" + Название + "; filename=" + ИмяФайла);
 ЗаписьДанных.ЗаписатьСтроку("Content-Type: image/png");
 ЗаписьДанных.ЗаписатьСтроку("");
 
 ЗаписьДанных.Записать(Картинка.ПолучитьДвоичныеДанные());
 
 ЗаписьДанных.Закрыть();
 
 Возврат Поток.ЗакрытьИПолучитьДвоичныеДанные();
КонецФункции
Показать


Инструкция:
1) вначале нужно проверить доступность сервера, куда отсылаешь. Иначе, дальнейшие шаги не имеют смысла.
--- доступ по ключу, паролю (проверка)

2) потом можно отправить готовый файл (картинку)
3) потом можно собрать в коде 1с файл и его отправить
3. Dana_K 03.06.23 13:56 Сейчас в теме
(2)
boundary=" + Разделитель


Спасибо большое, попробую
4. Dana_K 03.06.23 13:58 Сейчас в теме
(2)
("Content-Disposition: form-data; name=" + Название + "; filename=" + ИмяФайла)


Можете подсказать насколько заголовок "Content-Disposition: form-data" обязателен?


Мне просто приходит ответ "не допустимое значение Content-Disposition"
5. Dana_K 03.06.23 14:26 Сейчас в теме
(2)
Поток = Новый ПотокВПамяти();
ЗаписьДанных = Новый ЗаписьДанных(Поток);

//устанавливаем заголовки
ЗаписьДанных.ЗаписатьСтроку("Content-Disposition: form-data; name=" + Название + "; filename=" + ИмяФайла);
ЗаписьДанных.ЗаписатьСтроку("Content-Type: image/png");
ЗаписьДанных.ЗаписатьСтроку("");

ЗаписьДанных.Записать(Картинка.ПолучитьДвоичныеДанные());

ЗаписьДанных.Закрыть();

Возврат Поток.ЗакрытьИПолучитьДвоичныеДанные();
Показать



Написала как Вы ответили. Только файл не картинка а ворд.

Но получаю ответ "{"errors":{"":["Failed to read the request form. Invalid header line: test"]},"type":"https://tools.ietf.org/html/rfc7231#section-6.5.1","title":"One or more validation errors occurred.","status":400,"traceId":"|f401a655-47c30fc8af09eb53."}"(((
Оставьте свое сообщение

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