|
Проблема с отправкой HTTP POST multipart/from-data | ☑ | ||
---|---|---|---|---|
0
BayunTheCat
01.11.19
✎
06:26
|
Здравствуйте, подскажите пожалуйста где у меня ошибка?
&НаСервере Функция ПодготовитьКОтправке(АдресДвоичныхДанных, имяФайла) //СодержимоеФайла = Base64Строка(ПолучитьИзВременногоХранилища(АдресДвоичныхДанных)); СодержимоеФайла = ПолучитьИзВременногоХранилища(АдресДвоичныхДанных); ПотокТело = Новый ПотокВПамяти(); ФайлОтправки = Новый ЗаписьДанных(ПотокТело,КодировкаТекста.UTF8); ФайлОтправки.ЗаписатьСтроку("Content-Disposition: form-data; name=""file""; filename=""" + ИмяФайла + """"); ФайлОтправки.ЗаписатьСтроку("Content-Type: image/jpeg"); //файлОтправки.ЗаписатьСтроку("Content-Type: application/octet-stream\r\n"); //файлОтправки.ЗаписатьСтроку("Content-Transfer-Encoding: binary\r\n"); ФайлОтправки.ЗаписатьСтроку(""); ФайлОтправки.Записать(СодержимоеФайла); ФайлОтправки.ЗаписатьСтроку(""); ФайлОтправки.Закрыть(); ДвоичныеДанныеТело = ПотокТело.ЗакрытьИПолучитьДвоичныеДанные(); Возврат ДвоичныеДанныеТело; КОнецФункции &НаСервере Функция ОтправитьФаил(имяфайлаПолноеНаКлиенте,ИмяФайлаКр, АдресДвоичныхДанных) ДвоичныеДанныеКартинка = ПодготовитьКОтправке(АдресДвоичныхДанных,ИмяФайлаКр); Разделитель = "AWESOMEDELIMETER"; // Соединение = ср_ОбщиеФункцииСервер.ПолучитьСоединениеССайтом(); Соединение = Новый HTTPСоединение("192.168.0.5", 8000, , ,,, Неопределено); ЗаголовокHTTP = Новый Соответствие(); //Обязательные поля заголовка //Укажем формат данных Content-Type ЗаголовокHTTP.Вставить("Content-Type", "multipart/form-data; boundary=" + Разделитель); //Укажем длину POST-запроса Content-Length ЗапросHTTP = Новый HTTPЗапрос(); ЗапросHTTP.АдресРесурса = "/api-auth/sku/set_sku_information/"; ЗапросHTTP.Заголовки = ЗаголовокHTTP; ПотокТело = Новый ПотокВПамяти(); ЗаписьДанных = Новый ЗаписьДанных(ПотокТело); ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель); //ЗаписьДанных.ЗаписатьСтроку(Символы.ПС) ЗаписьДанных.Записать(ДвоичныеДанныеКартинка); ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель + "--"); ЗаписьДанных.Закрыть(); ДвоичныеДанныеТело = ПотокТело.ЗакрытьИПолучитьДвоичныеДанные(); ЗаголовокHTTP.Вставить("Content-Length", ДвоичныеДанныеТело.Размер()); ЗапросHTTP.УстановитьТелоИзДвоичныхДанных(ДвоичныеДанныеТело); ОтветHTTP = Соединение.ОтправитьДляОбработки(ЗапросHTTP); Результат = ОтветHTTP.ПолучитьТелоКакСтроку(КодировкаТекста.UTF8); УдалитьИзВременногоХранилища(АдресДвоичныхДанных); |
|||
1
ДенисЧ
01.11.19
✎
06:27
|
Судя по всему - в ДНК.
Ошибки не привёл, причин возникновения вопроса тоже... |
|||
2
BayunTheCat
01.11.19
✎
07:02
|
Ты я вижу умеешь оскороблять людей, жаль не умеешь по делу говорить.
Ошибка если не понятно в сформированном запросе, возможно где то нужен перенос строки, возможно не нужен, возможно нужно заголовок какой то установить - я не знаю. На сервере в обработчик пустой массив файлов прилетает, тело запроса не верное. |
|||
3
Cyberhawk
01.11.19
✎
08:44
|
После разделителя должны не сами данные идти, а еще пара заголовков
|
|||
4
Cyberhawk
01.11.19
✎
08:47
|
А вот тут
ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель + "--"); должны быть символы == |
|||
5
Cyberhawk
01.11.19
✎
08:49
|
Но помню что е*отня тоже была, пока методом тыка не подошло.
Если брать за основу работающий пример то уже все легко потом. |
|||
6
Сияющий в темноте
01.11.19
✎
08:49
|
во первых
перевод строки символы.вк + символы.пс во вторых,перед каждым блоком указывается его тип и длина блока. |
|||
7
ДенисЧ
01.11.19
✎
08:51
|
(2) "На сервере в обработчик пустой массив файлов прилетает"
Мы должны были это угадать? |
|||
8
Cyberhawk
01.11.19
✎
08:54
|
Ну и Content-Length никогда не нужно задавать
|
|||
9
Cyberhawk
01.11.19
✎
08:56
|
(3) + после них пустая строка
|
|||
10
dmt
01.11.19
✎
08:58
|
ЗаписьДанных.ЗаписатьСтроку("--" + Разделитель);
ЗаписьДанных.ЗаписатьСтроку(СтрШаблон("Content-Disposition: form-data; name=""document""; filename=""%1.pdf""", ?(ПустаяСтрока(ИмяФайла), "document_" + Строка(Новый УникальныйИдентификатор()), ИмяФайла))); ЗаписьДанных.ЗаписатьСтроку("Content-Type: application/pdf"); ЗаписьДанных.ЗаписатьСтроку(""); |
|||
11
BayunTheCat
01.11.19
✎
09:15
|
(8) Помогло убрать Content-Length, больше ничего не менял
|
|||
12
Cyberhawk
01.11.19
✎
09:16
|
(11) Отчет меня уже не особо интересует
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |