2016-11-27 14 views
0

以下はコードです。以下のコードは、IOExceptionがでメッセージがあるサムスンタブ10.1HTTPエラー416 AndroidでGoogleドライブレスト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); 

を使用して、ユーザーのいずれかの1例を除いて、正常に動作します。

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の一部)を使用しており、実装は正しいように見えます。私が考えることができるのは、サムスンのタブ10.1デバイスに、バグがある可能性のあるGoogle APIの実装が異なることだけです。

誰もこの問題に直面していませんか?

+0

複数のデバイスでこれをテストしましたか?オープンドライブ時にブラウザを使用していますか?この[HTTPエラー416](https://bugs.chromium.org/p/chromium/issues/detail?id=68298)を見つけました –

+0

@ d.datul1990リンクをありがとうございます。エラーの原因はコード内でデータをGoogleドライブにプッシュすることにあります。同期されたonStartCommand内でデータをプッシュするためにアンドロイドサービスを使用していました。しかし、アップロードが同時に行われていて、ドライブ内のファイルが破損しているようです。 (テストデバイスで強制的にアップロードを強制して問題を再現しました)。アップロードを静的オブジェクトと同期させて、問題を解決しました。今私はいくつかのデバイスに問題があり、複数のサービスインスタンスを許可するかどうか疑問に思っていますか? –

答えて

0

問題は、コンテンツなしで作成されたファイルをダウンロードしようとしている可能性があります。このようなファイルを取得しようとするたびに、416が表示されます。これを修正するには、ファイルをデータで更新できます。

関連する問題