Http 错误 416 请求的范围无法满足,在 Android 上使用 Google Drive Rest API

Gau*_*pta 1 android google-drive-api

下面是一段代码。该代码工作正常,但在其中一位使用 Samsung Tab 10.1 的用户的一个实例上除外

String pageToken = null;
do {

    FileList remoteImageList = mService.files().list()
            .setSpaces("appDataFolder")
            .setPageToken(pageToken)
            .setQ("mimeType='image/webp'")
            .setPageSize(10)
            .setFields("nextPageToken, files(id, name)")
            .execute();
    for (com.google.api.services.drive.model.File file : remoteImageList.getFiles()) {

        File newLocalImage = new File(getExternalFilesDir(null), file.getName());
        FileOutputStream fos = new FileOutputStream(newLocalImage);
        mService.files()
                .get(file.getId())
                .executeMediaAndDownloadTo(fos);
        fos.close();

    }
    pageToken = remoteImageList.getNextPageToken();
} while (pageToken != null);
Run Code Online (Sandbox Code Playgroud)

以下是 IOException 中的消息。

416 Requested range not satisfiable
{
"error": {
"errors": [
{
    "domain": "global",
    "reason": "requestedRangeNotSatisfiable",
    "message": "Request range not satisfiable"
}
],
"code": 416,
"message": "Request range not satisfiable"
}
}
Run Code Online (Sandbox Code Playgroud)

从代码中可以看出,错误是在调用executeMediaAndDownloadTo方法时产生的。该方法的实现使用 MediaHttpDownloader (Google API 的一部分),并且实现看起来是正确的。我唯一能想到的是,Samsung Tab 10.1 设备有不同的 Google API 实现,这可能有 bug?

以前有人遇到过这个问题吗?

Jac*_*Ras 8

问题可能是您正在尝试下载一个已创建的没有任何内容的文件。每次您尝试获取此类文件时,您都会收到 416。要解决此问题,您可以使用数据更新文件。

  • 还有其他原因会导致这种情况发生吗?我的文件不为空 (2认同)