Ошибка многокомпонентной загрузки на один диск HTTP 400 Bad Request

Когда я загружал файл на onedrive со следующим:

HTTP POST https://apiis.live.net/v5.0/{foldid}/files?access_token={ACCESS_TOKEN}

Content-Type: multipart/form-data; boundary={boundary}

--{boundary}
Content-Disposition: form-data; name="file"; filename="{filename}"
Content-Type: application/octet-stream

{File content goes here}
--{boundary}

в соответствии с которым я следую руководству с https://msdn.microsoft.com/en-us/library/office/dn659726.aspx

Всегда выдает ошибку "java.lang.Exception: HTTP 400. Bad Request". Может ли одна команда водителей или кто-нибудь помочь мне советом, что происходит не так?

Спасибо и с наилучшими пожеланиями, Рональд


person user3252033    schedule 27.06.2016    source источник


Ответы (2)


Кажется, ваш запрос неправильно сформирован.
Я не знаю, как работает один диск, но после быстрого обзора по вашей ссылке вы пытались удалить «HTTP» перед заголовком «POST»?

Или содержимое вашего файла отправлено правильно?

person Tim Weber    schedule 27.06.2016

Судя по URL-адресу https://apis.live.net/v5.0/{folderid}/files?access_token={ACCESS_TOKEN}, вы используете устаревший API LiveConnect. Я рекомендую использовать поддерживаемые API, расположенные по адресу https://api.onedrive.com, с описанным здесь методом загрузки < href="https://dev.onedrive.com/items/upload_put.htm" rel="nofollow">https://dev.onedrive.com/items/upload_put.htm, где запрос не нужна составная схема mime

PUT .../drive/root:/{parent-path}/{filename}:/content
Content-Type: text/plain

The contents of the file goes here.

Получите дополнительную информацию об этих API на странице https://dev.onedrive.com. проблемы, убедитесь, что вы включили полные заголовки и тело ответа HTTP.

person Peter Nied    schedule 27.06.2016
comment
Большое спасибо за ваш комментарий! Могу ли я узнать, хочу ли я загружать большие файлы, мне нужно использовать multipart, который я нашел в dev. onedrive.com/items/upload_post.htm? С другой стороны, URL-адрес PUT .../drive/root:/{parent-path}/{filename}:/content ... означает api.onedrive.com/v1.0? - person user3252033; 28.06.2016
comment
Извините за это, я новичок в разработке onedrive, из URL-адреса, мне не нужен токен доступа или где я должен использовать токен доступа? Спасибо!!! - person user3252033; 28.06.2016
comment
Каждый запрос к службе OneDrive должен включать заголовок, например: Authorization: Bearer AbCdEf123456 Вы можете использовать тот же токен аутентификации, что и для службы apis.live.net. - person Peter Nied; 28.06.2016
comment
Я бы не рекомендовал использовать многокомпонентную загрузку, поскольку она предназначена для устаревших целей, вместо этого используйте API возобновляемой загрузки, описанный здесь dev.onedrive.com/items/upload_large_files.htm - person Peter Nied; 28.06.2016
comment
Он использует Codename One API для сопоставления с REST API onedrive. Я не знаком с API onedrive, но могу помочь с условиями Codename One для операций REST. - person Shai Almog; 29.06.2016
comment
Мы пробовали возобновляемую загрузку раньше, но это потому, что наша реализация приложения будет шифровать поток и отправлять, поэтому мы не знаем длину содержимого. У вас есть альтернатива и решение для этого? Спасибо! - person user3252033; 29.06.2016
comment
Существует много схем шифрования, которые будут иметь детерминированную длину вывода, проверьте, доступны ли вспомогательные функции в ваших криптографических библиотеках, чтобы определить эти детали, в противном случае, используя блочные шифры, вы можете рассчитать количество блоков размера N, необходимых для хранения файла + дополнение. а затем добавьте требуемую константу хранения для деталей шифрования, которая не должна зависеть от длины зашифрованного файла. - person Peter Nied; 29.06.2016
comment
На самом деле, можем ли мы использовать устаревший API LiveConnect, как упоминалось в вопросе, потому что мы используем его. У нас мало времени, и новый API заставляет нас менять огромные коды, написанные ранее. Большое спасибо! - person user3252033; 30.06.2016