2

我想傳入一個int []作爲參數到我的端點(使用Objectify)。這裏是終點法:谷歌App Engine整數數組參數

@ApiMethod(name = "getThemeDetailsFromList") 
public CollectionResponse<Theme> getThemeDetailsFromList(@Named("ids") int[] ids) { 
    List<Theme> execute = new ArrayList<>(); 
    for (int id:ids) { 
     execute.add(getTheme(id)); 
    } 
    return CollectionResponse.<Theme> builder().setItems(execute).build(); 
} 

這裏是代碼從我的應用程序的一部分:我試圖傳遞一個int []作爲IDS

     Set<String> themes = tm.getFavoritesByID(); 
         List<Integer> ids = new ArrayList<>(); 
         for (String id: themes) { 
          ids.add(Integer.parseInt(id)); 
         } 
         results = endpoint.getIconThemeDetailsFromList(ids).execute(); 

,但它不會讓我,只接受一個ArrayList。當我運行該應用時,出現以下返回錯誤:

> com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 
> Bad Request { "code": 400, "errors": [ 
>  { 
>  "domain": "global", 
>  "location": "ids[0]", 
>  "locationType": "parameter", 
>  "message": "Invalid integer value: '3,1,5'.", 
>  "reason": "invalidParameter" 
>  } ], "message": "Invalid integer value: '3,1,5'." } 

ids是{3,1,5}的陣列列表。我不知道爲什麼它讓我通過一個List,爲什麼它會給我返回錯誤。

+0

檢查此問題的解決方案:http://stackoverflow.com/questions/25359099/passing-list-of-boxed-primitives-to-google-cloud-endpoint – 2016-12-17 04:17:26

回答

2

所以我結束了創建我的要求,一個新的類:

public class BatchThemeRequest { 
private int[] ids; 

public void setIds(int[] ids) { 
    this.ids = ids; 
    } 

//code here 
} 

我編輯的後端是:

public CollectionResponse<Theme> retrieveBatchWithCursor(BatchThemeRequest batchThemeRequest) { 
// code here 
} 

在應用程序,我將創建一個新BatchThemeRequest並添加我的INT []到通過setIds();