【发布时间】:2022-03-28 16:04:32
【问题描述】:
更新:此问题似乎已解决。详情请见bug tracker report。
我在通过 Drive REST API (v3) 完成文件列表请求时遇到了一些困难,但没有
内部服务器错误(错误代码 500。)我正在尝试使用 name 和 appProperties 键调用
files().list() 在搜索条件中,name 和 createdTime 用于排序顺序。 (这是“案例 1”中的
下面的代码。)我使用的语法记录在here。
为了隔离问题,我采用了 Google Drive API > REST Android 快速入门项目
找到here 并对
getDataFromApi 方法如下面的代码块所示。
有六个测试用例使用搜索条件和排序字段的各种组合。一些查询成功,而 其他人因服务器代码 500 而失败并且一次超时。这些结果在运行 Android 7.0 的模拟器上是一致的 使用 API 24。我的问题源于早期版本。
我最感兴趣的是获得案例 1 的解决方案,并提供其他案例作为我试图找出问题所在的尝试。对于我可能做错了什么或可能发生的其他事情,我将不胜感激。
private List<String> getDataFromApi() throws IOException {
// Get a list of up to 10 files.
List<String> fileInfo = new ArrayList<String>();
/* Case 1: Crashes with following error:
500 Internal Server Error
{
"code" : 500,
"errors" : [ {
"domain" : "global",
"message" : "Internal Error",
"reason" : "internalError"
}],
"message" : "Internal Error"
} */
String query = "name contains 'Test' and not appProperties has {key='X' and value='Y'}";
String orderBy = "name, createdTime";
// Case 2: Succeeds and lists files.
// Like case 1, but "createdTime is dropped in sort order.
// String query = "name contains 'Test' and not appProperties has {key='X' and value='Y'}";
// String orderBy = "name";
// Case 3: Succeeds and lists files.
// Like case 1, but appProperties criteria is dropped.
// String query = "name contains 'Test'";
// String orderBy = "name, createdTime";
// Case 4: Times out.
// Like case 1, but the name criteria is dropped.
// String query = "not appProperties has {key='X' and value='Y'}";
// String orderBy = "name, createdTime";
// Case 5: Errors out like case 1.
// Like case 4, but the selection query is inverted.
// String query = "appProperties has {key='X' and value='Y'}";
// String orderBy = "name, createdTime";
// Case 6: Succeeds and lists files.
// Like case 4, but name is dropped in sort order.
// final String query = "not appProperties has {key='X' and value='Y'}";
// final String orderBy = "createdTime";
FileList result = mService.files().list()
.setPageSize(10)
.setFields("nextPageToken, files(id, name)")
// following was added
.setOrderBy(orderBy)
.setQ(query)
// end added code
.execute();
List<File> files = result.getFiles();
if (files != null) {
for (File file : files) {
fileInfo.add(String.format("%s (%s)\n",
file.getName(), file.getId()));
}
}
return fileInfo;
}
【问题讨论】:
-
请检查我的问题的编辑,我很抱歉,有时它不是标准答案。
-
简单的答案往往是最好的答案。非常感谢您抽出宝贵时间做出回应并进行一些自己的调查。
-
你对另一个问题的评论引起了我的兴趣,我去玩它。我一直在寻找谷歌的错误,没有多少人发现合法的错误,这是一项成就。 :)
-
幸运我.....;)
标签: google-drive-api