在Android应用中,我尝试使用 RESTful API 列出云端硬盘中的文件。
https://developers.google.com/drive/v2/reference/files/list
我在Google云端硬盘中有332个(仅限于数字)文件,我运行以下代码段(直接从上面的文档中获取),尝试列出它们:
private com.google.api.services.drive.Drive _svc;
...
Files.List rqst = _svc.files().list(); //.setFields("items(title, id)").setMaxResults(90);
do try {
FileList list = rqst.execute();
Log.i("TAG", "count: " + list.getItems().size());
rqst.setPageToken(list.getNextPageToken());
} catch (IOException e) { rqst.setPageToken(null); }
while (rqst.getPageToken() != null && rqst.getPageToken().length() > 0);
如果我使用普通请求:
_svc.files().list();
循环按预期生成分页结果,即 100 + 100 + 100 + 32 个文件
添加其他修饰符:
_svc.files().list().setFields("items(title, id)");
只给出了100个结果的第一页。 ' getNextPageToken()'产生NULL,表示没有更多可用数据。
有人说使用“ setMaxResults()”修饰符会产生相同的结果。例如,如果我添加' setMaxResults(90)',
_svc.files().list().setMaxResults(90);
生成90 + 90 + 90 + 62 = 332个文件,但
_svc.files().list().setMaxResults(90).setFields("items(title, id)");
只能生成90个文件,不再有可用的页面。
我假设我一定做错了,因为我发现我不太可能在一个界面中发现一个从未报告过的bug(经过几个小时的谷歌搜索) 现在已经很久了。
答案 0 :(得分:2)
您需要将nextPageToken请求为您要接收的字段之一。否则,它将显示为null,因为它未包含在响应中。