2016-11-27 56 views
0

下面是一段代碼。代碼正常,除了在採用三星標籤10.1Http錯誤416請求的範圍不能滿足,在Android上使用Google Drive Rest API

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); 

用於所述用戶的一個一個實例下面是在IOException的該消息。

416 Requested range not satisfiable 
{ 
"error": { 
"errors": [ 
{ 
    "domain": "global", 
    "reason": "requestedRangeNotSatisfiable", 
    "message": "Request range not satisfiable" 
} 
], 
"code": 416, 
"message": "Request range not satisfiable" 
} 
} 

從代碼中,我可以看到調用executeMediaAndDownloadTo方法時產生的錯誤。該方法的實現使用MediaHttpDownloader(Google API的一部分),並且實現看起來正確。我能想到的唯一的事情是三星Tab 10.1設備有不同的谷歌API實現,這可能有一個錯誤?

有沒有人遇到過這個問題?

+0

您是否使用多個設備測試了這個功能?打開驅動器時是否使用瀏覽器?發現此[HTTP錯誤416](https://bugs.chromium.org/p/chromium/issues/detail?id=68298) –

+0

@ d.datul1990感謝您的鏈接。導致錯誤的原因是代碼將數據推送到Google雲端硬盤。我正在使用android服務在同步的onStartCommand中推送數據。但似乎有同時上傳,它正在破壞驅動器中的文件。 (我通過在我的測試設備上強制同時上傳來重現該問題)。我將上傳與一個靜態對象同步並解決了問題。現在我想知道一些設備是否存在問題並允許多個服務實例? –

回答

0

這個問題可能是您試圖下載沒有任何內容的文件。每次嘗試獲取這樣的文件時,都會收到416.要解決此問題,您可以使用數據更新文件。

相關問題