Я собираюсь начать с решительно , рекомендовав переосмыслить свое решение на PUT-подписанные URL-адреса. С одним PUT любой сбой в сети означает, что вам придется начинать с самого начала, что будет болезненно для любого, кто использует что-то медленнее, чем сеть Gbit. Java SDK предоставляет диспетчер передачи, который автоматически разбивает файл на куски и повторно отправляет любые неудачные куски. Кроме того, это дает вам отчет о прогрессе.
ДА, я знаю, что вы сказали, что не получаете ключи API. Но то, что дает вам подписанный URL-адрес, может с такой же легкостью предоставить вам ключи API, предназначенные для загрузки одного файла.
ОК, вы не идете по этому пути. К сожалению, вы не показываете код, который вы в настоящее время используете для загрузки, поэтому мы не знаем, какие варианты у вас есть. Поэтому я предполагаю, что вы используете Apache Commons HttpClient, и укажу на этот ответ переполнения стека .