Я пытаюсь переименовать файловый ресурс диска Google. Я предполагаю, что мне просто чего-то не хватает, поскольку все остальные действия, такие как получение списка файлов, вставка файлов, перемещение файлов между каталогами, работают.
Предварительное условие: попытка переименовать файловый ресурс с помощью этого документа https://developers.google.com/drive/v2/reference/files/update с java (только с JDK). Кроме того, я не использую gdrive java sdk, http-клиент apache или другие библиотеки ... Просто очистите инструменты JDK.
Итак, что я делаю:
Вот метаданные файла, которые я пытаюсь отправить.
Измените свойство
title
в этих метаданныхВот код:
URLConnection urlConnection = new URL("https://www.googleapis.com/drive/v2/files/" + fileId).openConnection(); if (urlConnection instanceof HttpURLConnection) { HttpURLConnection httpURLConnection = (HttpURLConnection) urlConnection; httpURLConnection.setRequestMethod("PUT"); httpURLConnection.setDoOutput(true); httpURLConnection.setRequestProperty("Authorization", "Bearer " + accessToken); DataOutputStream outputStream = new DataOutputStream(httpURLConnection.getOutputStream()); outputStream.writeBytes(FILE_RESOURCE_METADATA_WITH_CHANGED_TITLE_IN_JSON); outputStream.flush(); outputStream.close(); }
После фактического вызова API я получаю код состояния 200 и ресурс файла в теле ответа (как и ожидалось), но заголовок остается прежним. Так что я не получил ни одной ошибки, ни названия не изменилось.
Более того, api диска Google игнорирует любые изменения файлового ресурса. Он просто возвращает тот же файловый ресурс без каких-либо изменений (пробовал с заголовком, описанием, исходным именем файла, родительскими свойствами).
Что я пробовал до сих пор:
Отправка только тех свойств, которые нужно изменить, например
{"title":"some_new_name"}
Результат такой же.
Изменение
PUT
наPATCH
. К сожалению,PATCH
не поддерживается HttpURLConnection, но обходные пути дали те же результаты. Изменения игнорируются.Использовал google api exlorer (который можно найти в правой части справочной страницы API) - и ... он работает. Заполнил только свойство fileId и title в теле запроса, и это сработало. Файл переименован.
Что мне не хватает?