Имя: Пароль:
1C
 
(1С PUT) Загрузка на яндекс диск командой PUT из 1С
0 assest
 
12.10.15
16:42
(1С PUT) Загрузка на яндекс диск командой PUT из 1С

Платформа 8.3.6

Пытаюсь загрузить на яндекс диск файл

Вот такой код

Токен = "Полученный токен";
Соединение = новый HTTPСоединение("webdav.yandex.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
Заголовки = Новый Соответствие;
Заголовки.Вставить("Accept","*/*");
Заголовки.Вставить("Authorization", "OAuth "+Токен);
Запрос = Новый HTTPЗапрос("",Заголовки);

Файл = Новый Файл("C:\Users\alexander\Pictures\dd.jpg");
//Файл.Размер()
Ответ= Соединение.ВызватьHTTPМетод("PUT /22/1.txt HTTP/1.1
|Etag: "+ХЕШMD5("C:\Users\alexander\Pictures\1.txt")+"
|Sha256: "+Хеш("C:\Users\alexander\Pictures\1.txt")+"
|Expect: 100-continue
|Content-Type: text
|Content-Length:"+Файл.Размер()+"
|
|"+Новый ДвоичныеДанные("C:\Users\alexander\Pictures\1.txt"), Запрос);

сообщить( Ответ.КодСостояния);



--------------------------------------------

Код возврата 500

В чем может быть ошибка?
1 assest
 
12.10.15
16:50
Функция ХЕШ(ФАЙЛ)
    Хеширование = Новый ХешированиеДанных(ХешФункция.SHA256);
    Хеширование.ДобавитьФайл(Файл);
    financeToken = СтрЗаменить(Строка(Хеширование.ХешСумма)," ","");    
КонецФункции
Функция ХЕШMD5(ФАЙЛ)
    Хеширование = Новый ХешированиеДанных(ХешФункция.MD5);
    Хеширование.ДобавитьФайл(Файл);
    financeToken =  СтрЗаменить(Строка(Хеширование.ХешСумма)," ","");    
КонецФункции
2 assest
 
12.10.15
16:51
Сначала было без СТРЗаменить()
Основу брал тут
https://api.yandex.ru/disk/doc/dg/yandex-disk-dg.pdf
3 assest
 
13.10.15
10:33
Изменим вопрос
Токен = " ";
    Соединение = новый HTTPСоединение("webdav.yandex.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL);
    Заголовки = Новый Соответствие;
    //Заголовки.Вставить("Accept","*/*");
    //Заголовки.Вставить("Depth", 1);
    //Заголовки.Вставить("Authorization", "OAuth "+Токен);
    Запрос = Новый HTTPЗапрос("webdav.yandex.ru",Заголовки);
    Ответ = Соединение.ВызватьHTTPМетод("GET /Desert.jpg?preview&size=XXXS HTTP/1.1
                                        |
                                        |Host: webdav.yandex.ru
                                        |Accept: */*
                                        |Authorization: OAuth "+Токен,Запрос);
    Если Ответ.КодСостояния = 200 Тогда
        ЭлементыФормы.ПолеКартинки1.Картинка = Новый Картинка(Ответ.ПолучитьТелоКакДвоичныеДанные());
    КонецЕсли;
    сообщить( Ответ.КодСостояния);

Ошибка 401
Если Раскоментировать заголовки и сделать строку "GET /Desert.jpg?preview&size=XXXS HTTP/1.1 ", то все работает. но мне абсолютно необходимо работать через строку. Как должна быть сформирована строка, чтобы проходили заголовки. Или Как передать и заголовки в запросе и файл в строке для команды PUT.
4 magicSan
 
13.10.15
10:36
может пост?
5 Serginio1
 
13.10.15
11:37
6 Serginio1
 
13.10.15
11:42
Для работы с асинхронными методами используй Result
Например

Процедура OnGetMessageImage(Данные)
    Попытка
    Сообщить("OnGetMessageImage");
    Сообщить(Врап.ВСтроку(Данные));
    Каталог=КаталогВременныхФайлов();
ИмяФайла=Path.Combine(Каталог,Данные.fileName);
//preview=Врап.ОбернутьЛюбойОбъект(Данные.preview);
HttpClient=Врап.СоздатьОбъект("System.Net.Http.HttpClient, System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
preview=HttpClient.GetByteArrayAsync(Данные.url).Result;

//preview=Врап.ОбернутьЛюбойОбъект(preview);
//File.WriteAllBytes(ИмяФайла,preview);

ДД=Base64Значение(Convert.ToBase64String(preview));
Картинка=Новый Картинка(ДД);
фрм=получитьФорму("ФормаОтчета1");
фрм.Открыть();

Исключение
    Сообщить(ОписаниеОшибки())
    КонецПопытки
КонецПроцедуры
7 torgm
 
13.10.15
11:50
(0) А зачем так сложно в 1с уже реализован свой функционал работы с яндексдиском.
8 assest
 
13.10.15
14:55
Угу, надо перейти на линукс там команда скопировать файл работать не будет
9 Patriot1C
 
13.10.15
15:05
(7) Уточните где в 1с реализован такой функционал, а может я зря парюсь...
http://catalog.mista.ru/public/343316/
10 assest
 
13.10.15
15:27
Основная теорема систематики: Новые системы плодят новые проблемы.