Я полагаю, причина того, что вы получаете эту ошибку, заключается в том, что вы указываете Content-Type
со значением application/octet-stream
в заголовке вашего запроса, но не в вашем stringToSign
.Пожалуйста, измените ваш stringToSign
на что-то вроде:
String stringToSign = "PUT" + "\n" + "\n" + "\n" + "\n" + "\n" + "application/octet-stream\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\nx-ms-content-length:1024" + "\nx-ms-date:" + date + "\nx-ms-type:file" + "\nx-ms-version:" + "2015-02-21" + +"/" + account + request.getURL().getPath();
или вы можете удалить Content-Type
из заголовков ваших запросов, так как по умолчанию тип контента будет application/octet-stream
.
ОБНОВЛЕНИЕ
Я также заметил пропущенный символ новой строки после 2015-02-21
(значение x-ms-version).Вы можете добавить это?
String stringToSign = "PUT" + "\n" + "\n" + "\n" + "\n" + "\n" + "application/octet-stream\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\nx-ms-content-length:1024" + "\nx-ms-date:" + date + "\nx-ms-type:file" + "\nx-ms-version:" + "2015-02-21" + "\n/" + account + request.getURL().getPath();