客户端接收500(GoogleJsonResponseException)虽然app-engine端点服务器似乎工作正常

时间:2014-05-06 23:03:58

标签: java android google-app-engine google-cloud-endpoints google-eclipse-plugin

这个错误有点神秘。我有一个返回List<String>的Google-Cloud-Endpoint方法。在退出方法之前,我将字符串的内容记录为

LOG.info(“list has: " + results);

当我查看app-engine的日志时,我看到了打印输出。

现在在android端我将内容读作

StringCollection collection = service.getResults().execute();

根据android LogCat的说法,该行正在抛出异常,指责服务器返回500错误:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 500 Internal Server Error
{
  "code": 500,
  "errors": [
    {
      "domain": "global",
      "message": "Internal Error",
      "reason": "internalError"
    }
  ],
  "message": "Internal Error"
}
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
    at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:312)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1045)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:410)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:343)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:460)
    at com.business.game.pack.ServerCall$2.doInBackground(ServerCall.java:189)
    at com.business.game.pack.ServerCall$2.doInBackground(ServerCall.java:1)
    at android.os.AsyncTask$2.call(AsyncTask.java:288)
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
    at java.lang.Thread.run(Thread.java:841)

我不确定如何修复此错误,因为它似乎超出了我的实际代码。

其他尝试:

用于返回CollectionResponse.<String> builder().setItems(results).build()的端点。我将其更改为result作为故障排除,但这没有帮助。所以现在方法签名(仍然失败)是

@ApiMethod(name = "getResults", httpMethod = HttpMethod.GET)
public List<String> getResults() {
    LOG.info(“Into  getResults");
    //… more code
    LOG.info(“list has: " + results);
    return results;// CollectionResponse.<String> builder().setItems(results).build();
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

答案很糟糕,我希望谷歌人能解决这个问题。显然,您不能使用String或String of Collection作为返回类型。所以以下任何一种都会失败:

return result;//String
return results;//List<String>
return CollectionResponse.<String> builder().setItems(results).build();

相反,您必须创建一个包装器,将字符串或其集合作为字段;一个基本的POJO。

这浪费了我10小时的时间。我希望它为下一个gal /家伙带来一些麻烦。