Google App Engine整数数组参数

时间:2014-08-29 02:16:32

标签: java android google-app-engine google-cloud-endpoints objectify

我正在尝试将int []作为参数传入我的端点(使用Objectify)。这是端点方法:

@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();
}

以下是我的应用程序中的代码部分:

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

我尝试将int []作为id传递,但它不会让我只接受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}的arraylist。我不知道为什么它让我传入一个列表,为什么它给我返回错误。

1 个答案:

答案 0 :(得分: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 []添加到via setIds();