我从google 文档获取了以下代码。
public static void detectDriveChanges() throws IOException {
StartPageToken response = DRIVE.changes()
.getStartPageToken().execute();
String savedStartPageToken = response.getStartPageToken();
System.out.println("Start token: " + savedStartPageToken);
// Begin with our last saved start token for this user or the
// current token from getStartPageToken()
String pageToken = savedStartPageToken;
while (pageToken != null) {
ChangeList changes = DRIVE.changes().list(pageToken)
.setFields("*")
.execute();
for (Change change : changes.getChanges()) {
// Process change
System.out.println("Change found for file: " + change.getFileId());
}
if (changes.getNewStartPageToken() != null) {
// Last page, save this token for the next polling interval
savedStartPageToken = changes.getNewStartPageToken();
}
pageToken = changes.getNextPageToken();
}
}
.setFields("*")会导致以下不良请求响应。
Exception in thread "main" com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
"code" : 400,
"errors" : [ {
"domain" : "global",
"message" : "Bad Request",
"reason" : "badRequest"
} ],
"message" : "Bad Request"
如果我将* in setfield更改为text,则会得到无效的参数。如果我完全删除它,我就不会有任何错误。在本例中,我已经在googled中尝试确定setFields的可能参数,但我没有找到任何东西。
在这个实例中,在哪里可以找到setFields的可能参数列表?
当setFields设置为*时,上面的代码为什么会失败?
我使用以下依赖项
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-drive</artifactId>
<version>v3-rev40-1.22.0</version>
</dependency>
向康德问好
发布于 2016-09-08 06:13:28
setField
for Drive用于部分响应,它将取决于您希望哪些数据是返回对象的一部分。
在它上设置"*“将无法工作,因为它不代表Response
对象中的任何字段。要使其工作,要么设置字段以获取所有值,要么指定只需要的字段(取决于您正在调用的API ),对于changeList,可以是changes
、nextPageToken
、newStartPageToken
、kind
发布于 2017-09-08 18:59:32
删除.setFilters可以工作,但我仍然希望减轻流量和内存使用。这个列表帮助我找到mime类型的字段名,它原来是“mimeType”区分大小写的!尝试这里列出的字段
我需要分类文件夹从所有的文件,因为文件夹也是文件在谷歌驱动器。以下是我所需要的一切:
.setFields("nextPageToken,file(id,name,mimeType)")
祝好运。
发布于 2019-08-21 07:31:31
正如@adjuremods所指出的,您可以通过跳过“setFields”,即不设置特定字段来检索所有字段。添加他的答案,并回答您对第四段的问题(希望帮助其他开发人员还不太晚):“,在这个例子中,我在哪里可以找到setFields的可能参数列表?”
您可以从以下属性列表中选择要在请求中设置的字段:https://developers.google.com/drive/api/v3/reference/files#properties只是小心地检查该属性是否可用。例如,“imageMediaMetadata”仅适用于图像文件;“thumbnailLink”在请求“元数据”时可用,而对于请求“创建”不可用;依此类推。
https://stackoverflow.com/questions/39368417
复制