2016-09-07 18 views
0

Google documentationから次のコードを取得しました。以下の不正な要求応答を引き起こしGoogleドライブAPIのsetFieldsの有効な値

public static void detectDriveChanges() throws IOException { 

    StartPageToken response = DRIVE.changes() 
      .getStartPageToken().execute(); 

    String savedStartPageToken = response.getStartPageToken(); 
    System.out.println("Start token: " + savedStartPageToken); 

    // Begin with our last saved start token for this user or the 
    // current token from getStartPageToken() 
    String pageToken = savedStartPageToken; 
    while (pageToken != null) { 
     ChangeList changes = DRIVE.changes().list(pageToken) 
       .setFields("*") 
       .execute(); 
     for (Change change : changes.getChanges()) { 
      // Process change 
      System.out.println("Change found for file: " + change.getFileId()); 
     } 
     if (changes.getNewStartPageToken() != null) { 
      // Last page, save this token for the next polling interval 
      savedStartPageToken = changes.getNewStartPageToken(); 


     } 
     pageToken = changes.getNextPageToken(); 
    } 
} 

.setFields( "*")。

Exception in thread "main" com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request 
{ 
    "code" : 400, 
    "errors" : [ { 
    "domain" : "global", 
    "message" : "Bad Request", 
    "reason" : "badRequest" 
    } ], 
    "message" : "Bad Request" 

setfieldsの*をtextに変更すると、無効なパラメータが返されます。私がそれを完全に取り除くと、私は間違いがない。私は可能なパラメータがこのケースではsetFieldsのためにあるものを決定しようとしましたが、私は何も見つけられませんでした。

このインスタンスでは、setFieldsの可能なパラメータのリストはどこにありますか?

setFieldsがに設定されているのに、なぜ上記のコードは失敗しない*

私は、ドライブのAPIのためのsetFieldが部分的に使用され、次の依存関係

<dependency> 
    <groupId>com.google.apis</groupId> 
    <artifactId>google-api-services-drive</artifactId> 
    <version>v3-rev40-1.22.0</version> 
</dependency> 

よろしく Conteh

+0

どこで答えますか? – xenteros

答えて

2

を使用しています返されるオブジェクトの一部となるデータの種類によって異なります。

Responseオブジェクトのフィールドを表していないため、「*」を設定しても機能しません。それが機能するためには、あなたはすべての値を取得するためにフィールドを設定、または唯一の必要なフィールドを指定していないのどちらか(あなたが呼んでいるAPIに依存して、チェンジのために、それはchangesnextPageTokennewStartPageTokenkind

0
することができ

私が尋ねた質問のコードは、SAVED_START_PAGE_TOKENを最初に設定し、次にドライブに加えた変更を一覧表示する必要があるため、次のように2つの機能に分かれていなければなりません。

/** 
* Sets SAVED_START_PAGE_TOKEN. Now any changes in google drive 
* the occur after this point can be listed in the the function 
* detectDriveChanges 
* @throws IOException 
*/ 
public static void SetStartPageToken() throws IOException { 
    StartPageToken response = DRIVE.changes().getStartPageToken().execute(); 
    SAVED_START_PAGE_TOKEN = response.getStartPageToken(); 
    System.out.println("Start token: " + SAVED_START_PAGE_TOKEN); 
} 

/** 
* List any changes to the google drive since the last time 
* SAVED_START_PAGE_TOKEN was set 
* @throws IOException 
*/ 
public static void detectDriveChanges() throws IOException { 
    // Begin with our last saved start token for this user or the 
    // current token from getStartPageToken() 
    String pageToken = SAVED_START_PAGE_TOKEN; 
    while (pageToken != null) { 
     ChangeList changes = DRIVE.changes().list(pageToken) 
       .setFields("changes") 
       .execute(); 
     for (Change change : changes.getChanges()) { 
      System.out.println("Change found for file: " + change.getFileId()); 
     } 
     if (changes.getNewStartPageToken() != null) { 
      // Last page, save this token for the next polling interval 
      SAVED_START_PAGE_TOKEN = changes.getNewStartPageToken(); 
     } 
     pageToken = changes.getNextPageToken(); 
    } 
} 
0

.setFiltersを削除しても、トラフィックとメモリの使用量を削減したいと考えていました。 このリストは私に役立ちましたd mimeタイプのフィールド名。これは 'mimeType'の大文字と小文字を区別します。 try fields listed here

私はすべてのファイルからフォルダを整理する必要があります。原因はフォルダもGoogleドライブにあるためです。

.setFields( "nextPageToken、ファイル(ID、名前、MIMEタイプ)")

幸運:ここに は私が必要なものすべてです。

関連する問題