Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 客户端接收500(GoogleJsonResponseException),但应用引擎端点服务器似乎工作正常_Java_Android_Google App Engine_Google Cloud Endpoints_Google Eclipse Plugin - Fatal编程技术网

Java 客户端接收500(GoogleJsonResponseException),但应用引擎端点服务器似乎工作正常

Java 客户端接收500(GoogleJsonResponseException),但应用引擎端点服务器似乎工作正常,java,android,google-app-engine,google-cloud-endpoints,google-eclipse-plugin,Java,Android,Google App Engine,Google Cloud Endpoints,Google Eclipse Plugin,这个bug有点神秘。我有一个googlecloud端点方法,它返回List。在退出方法之前,我将字符串的内容记录为 LOG.info(“list has: " + results); 当我查看AppEngine的日志时,我看到了打印输出 现在在安卓方面,我读到的内容是 StringCollection collection = service.getResults().execute(); 根据android LogCat,line正在抛出一个异常,指责服务器返回500个错误: com.go

这个bug有点神秘。我有一个googlecloud端点方法,它返回
List
。在退出方法之前,我将字符串的内容记录为

LOG.info(“list has: " + results);
当我查看AppEngine的日志时,我看到了打印输出

现在在安卓方面,我读到的内容是

StringCollection collection = service.getResults().execute();
根据android LogCat,line正在抛出一个异常,指责服务器返回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的端点。builder().setItems(results).build()
。我将其更改为简单的
result
,作为故障排除,但这没有帮助。所以现在方法签名(仍然失败)是

@ApiMethod(name=“getResults”,httpMethod=httpMethod.GET)
公共列表getResults(){
LOG.info(“进入getResults”);
//…更多代码
LOG.info(“列表有:“+结果”);
返回结果;//CollectionResponse.builder().setItems(results.build();
}

谢谢您的帮助。

答案很糟糕,我希望google人员能够解决这个问题。显然,您不能使用字符串或字符串集合作为返回类型。因此,以下任何一项都将失败:

return result;//String
return results;//List<String>
return CollectionResponse.<String> builder().setItems(results).build();
返回结果;//字符串
返回结果;//列表
返回CollectionResponse.builder().setItems(results.build();
相反,您必须创建一个将字符串或其集合作为字段的包装器;一个基本POJO


这浪费了我整整10个小时的时间。我希望这能为下一个gal/guy省去一些麻烦。

检查两个请求之间的内容类型是否相同(application/json)@DanOsipov我试图理解你说的话,但我不明白。我该怎么做?列表中的字符串也不是派生的。它们是客户端发送到数据存储的字符串,没有任何问题。为什么它不抛出一个
GoogleJsonResponseException
?当然,正如我之前所说的,服务器日志显示了听起来不错。
return result;//String
return results;//List<String>
return CollectionResponse.<String> builder().setItems(results).build();