Проблема с отправкой 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 67 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."}"(((
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)