1c 8.3 HTTPСоединение, метод PUT #755760


#0 by assest
Итак, есть задача: отправить файл по WebDav'у на Яндекс диск. Функции скачать, создать папку и удалить файл уже реализованы мной. Пример: Соединение = новый HTTPСоединение("webdav.yandex.ru",443,,,,,Новый ЗащищенноеСоединениеOpenSSL); ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Обработка спокойно получает файл. НО в методе PUT Необходимо присоединить сам файл, вроде как его надо добавить в тело запроса например так: ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Но если мы начинаем добавлять перенос строки в тело запроса, он либо выдает мне синтаксическую ошибку, либо перестает читать что либо после " HTTP/1.1". Я пробовал передавать заголовки в теле запроса-не работает(не авторизуется, т.е. не видит заголовка с авторизацией), пробовал передавть что либо с помощью метода HTTPЗапрос.УстановитьТелоИзСтроки - Все в том числе и явные ошибки игнорируются. Дальше всего я продвинулся на коде, где я не присоединяю файл,WebDebager говорит мне что я заявляю файл 17 байт, а отправляю 0, если присоединяю файл, он не проходит аунтификацию ВОПРОС: Как мне передать файл в HTTPСоединение, в теле запроса или как то иначе? в чем моя ошибка?.
#1 by Dunemaster
Как минимум, Content-Length лучше не заполняться самому. Платформа сделает это правильнее.
#2 by assest
Черт, я строку 1 не вставил Ответ= Соединение.ВызватьHTTPМетод("PUT /22/dd.jpg HTTP/1.1", Запрос);
#3 by assest
С размером я разберусь, когда смогу пристегнуть файл
#4 by Dunemaster
А еще у вас очень странный синтаксис ВызватьHTTPМетод("PUT /22/dd.jpg HTTP/1.1" Первым параметром должно идти только имя метода (PUT) //22/dd.jpg нужно пихать в первый параметр HTTPЗапрос HTTP/1.1 добавиться автоматически
#5 by assest
Такая идея была, но как ее организовать? В какие заголовки или параметры поместить файл и " /22/dd.jpg"?
#6 by assest
У HTTPЗапрос есть только заголовки-соответствия которые я задал. Что значит первый параметр?
#7 by Dunemaster
Запрос = Новый HTTPЗапрос("/22/dd.jpg",Заголовки)
#8 by assest
Переменная Путь-это путь до файла?
#9 by assest
Ошибка из 1с  Failure when receiving data from the peer Ошибка из дебагера "Content-Length mismatch: Request Header indicated 6 bytes, but client sent 0 bytes." Мои соображения: выполнение заняло секунд 80, либо надо как то указывать окончания файла, либо он вообще файла не видит
#10 by assest
Народ нужна помощь!!!
#11 by Serginio1
Фиддлер в руки и смотри разницу
#12 by Patriot1C
Зачем Web-dav если api хороший есть
#13 by assest
Вот что получилось на api 200 и 202 Вроде файл отправлен для обработки но он не появляется на диске
#14 by assest
Тоже самое с Соединение.Записать(Запрос); Возвращает 413, слишком большое тело запроса
#15 by Serginio1
А строка(ДвоичныеДанные(Путь))= Base64Строка(ДвоичныеДанные(Путь))= )= истина?
#16 by assest
Вот что у меня получилось, заменил PUT на POST: ОТВЕТЫ: 200 202 200{"status":"in-progress"} Файл вроде как отправлен и находится в процессе, но на Яндекс диске не появляется
#17 by Serginio1
А фиддлер в руки взять не судьба? Зачем гадать?
#18 by assest
Вот что отвечает фиддлер 4    The Client did not send properly formatted HTTP Headers. HTTP headers should be terminated with CRLFCRLF. These were terminated with LFLF. 4    Incorrectly formed Request-Line
#19 by Serginio1
Там надо прокси прописать для HTPS
#20 by Serginio1
#21 by assest
Я уже добавил HTTPS, вроде все отправляется, я вижу свои заголовки и двоичные данные картинки. Но все равно запрос не работает.
#22 by assest
Кстати что мы ставим в Content-Length?
#23 by Serginio1
Так ты проверь с валидным например из браузера. А ничего  не надо ставить.
#24 by Serginio1
Отправь не картинку а какой нибудь небольшой текстовый файл на одно слово, что бы сравнить
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С