Имя: Пароль:
1C
1С v8
POST запрос multipart/related
0 Waterfall1
 
24.03.17
18:05
Добрый день, пытаюсь передать файл с его метаданными в запросе.
Возвращает Invalid multipart request with 0 mime parts.

Пример кода :

Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()),"-","");    
    
    // Формируем JSON    
    ТекстДляОтправки = Новый ЗаписьJSON;
    ТекстДляОтправки.ПроверятьСтруктуру = Истина;
    ПараметрыТекстаДляОтправки = Новый ПараметрыЗаписиJSON(, Символы.Таб);
    
    ТекстДляОтправки.УстановитьСтроку(ПараметрыТекстаДляОтправки);
    ТекстДляОтправки.ЗаписатьНачалоОбъекта();
         
    ТекстДляОтправки.ЗаписатьИмяСвойства("name");
    ТекстДляОтправки.ЗаписатьЗначение(Имяфайла);    
    
    //ТекстДляОтправки.ЗаписатьИмяСвойства("mimeType");
    //ТекстДляОтправки.ЗаписатьЗначение("application/vnd.ms-excel");
    ТекстДляОтправки.ЗаписатьКонецОбъекта();
    ТекстОтправки = ТекстДляОтправки.Закрыть();
    
    // Первая часть
    ИмяФайлаОтправки1 = ПолучитьИмяВременногоФайла("tmp");     
    ЗаписьТекста = Новый ЗаписьТекста(ИмяФайлаОтправки1,КодировкаТекста.UTF8);
    ЗаписьТекста.ЗаписатьСтроку("--"+boundary);
    ЗаписьТекста.ЗаписатьСтроку("Content-Type: application/json; charset=UTF-8");
    ЗаписьТекста.ЗаписатьСтроку("");
    ЗаписьТекста.ЗаписатьСтроку(ТекстОтправки);
    ЗаписьТекста.ЗаписатьСтроку("");
    ЗаписьТекста.Закрыть();
    МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправки1);
    
    // Вторая часть
    ИмяФайлаОтправки2 = ПолучитьИмяВременногоФайла("tmp");
    ЗаписьТекста = Новый ЗаписьТекста(ИмяФайлаОтправки2,КодировкаТекста.UTF8);
    ЗаписьТекста.ЗаписатьСтроку("--"+boundary);
    ЗаписьТекста.ЗаписатьСтроку("Content-Type: image/jpeg");
    ЗаписьТекста.ЗаписатьСтроку("");
    ЗаписьТекста.Закрыть();

    МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправки2);
МассивФайловДляОбъединения.Добавить(ВыборФайла);
    
    
    //четвертая часть
    
    ИмяФайлаОтправки3 = ПолучитьИмяВременногоФайла("tmp");
    ЗаписьТекста = Новый ЗаписьТекста(ИмяФайлаОтправки3,КодировкаТекста.UTF8);
    ЗаписьТекста.ЗаписатьСтроку(Символы.ПС);
    ЗаписьТекста.ЗаписатьСтроку("--" + Boundary + "--");
    ЗаписьТекста.Закрыть();
    МассивФайловДляОбъединения.Добавить(ИмяФайлаОтправки3);
    
    //Объединение файлов
    
    ФайлКОтправке  = ПолучитьИмяВременногоФайла("tmp");
    ОбъединитьФайлы(МассивФайловДляОбъединения,ФайлКОтправке);
    Файл = Новый Файл(ФайлКОтправке);
    Размер = XMLСтрока(Файл.Размер());
    
    УдалитьФайлы(ИмяФайлаОтправки1);
    УдалитьФайлы(ИмяФайлаОтправки2);
    УдалитьФайлы(ИмяФайлаОтправки3);

    HTTPСоединение = Новый HTTPСоединение("http://www.googleapis.com";,,,,,,Новый ЗащищенноеСоединениеOpenSSL());
    Заголовки = Новый Соответствие();    
    Заголовки.Вставить("authorization","Bearer "+ObtainedToken);
    Заголовки.Вставить("Content-Type", "multipart/related; boundary="+Boundary);
    Заголовки.Вставить("Content-length",Размер);

    Запрос = Новый HTTPЗапрос("upload/drive/v2/files?uploadType=multipart",Заголовки);
    
    Запрос.УстановитьИмяФайлаТела(ФайлКОтправке);
    Результат = HTTPСоединение.ОтправитьДляОбработки(Запрос);
    СтрокаОтвета = Результат.ПолучитьТелоКакСтроку();

Может кто сталкивался с подобной задачей и может указать на ошибку.
1 Serginio1
 
24.03.17
21:29
2 Serginio1
 
24.03.17
21:31
Ошибка? Это не ошибка, это системная функция.