【发布时间】:2017-08-16 12:43:38
【问题描述】:
我正在尝试重命名 google 驱动器文件资源。我想我只是遗漏了一些东西,因为所有其他操作(例如获取文件列表、插入文件、在目录之间移动文件)都在工作。
前提条件:尝试使用此文档 https://developers.google.com/drive/v2/reference/files/update 和 java 重命名文件资源(仅使用 JDK 内容)。另外,我不使用 gdrive java sdk、apache http 客户端或其他库......只是清理 JDK 工具。
那么我该怎么做:
Here 是我要发送的文件元数据。
修改此元数据中的
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 个状态代码和文件资源(如预期的那样),但标题保持不变。所以我没有错误没有更改标题。
此外,google drive api 会忽略文件资源中的任何更改。它只是返回相同的文件资源而不应用任何更改(尝试使用标题、描述、原始文件名、父属性)。
到目前为止我也尝试过:
-
只发送应该改变的属性,比如
{"title":"some_new_name"}
结果是一样的。
将
PUT更改为PATCH。不幸的是,PATCH不受 HttpURLConnection 支持,但解决方法给出了相同的结果。更改将被忽略。使用了 google api exlorer(可以在 API 参考页面的右侧找到) - 并且...它可以工作。仅在请求正文中填写了 fileId 和 title 属性,并且可以正常工作。文件已重命名。
我错过了什么?
【问题讨论】:
标签: google-api google-drive-api google-apis-explorer