|
(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
|
||||
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
|
(9) ДЛЯ 8.3
http://grishaev.me/2013/02/25/1/ |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |