Клиент получает 500 (GoogleJsonResponseException), хотя сервер конечной точки ядра приложения работает нормально

Эта ошибка немного загадка. У меня есть метод Google-Cloud-Endpoint, который возвращает List<String>, Непосредственно перед выходом из метода я записываю содержимое строки как

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 ответ

Ответ довольно дрянной, и я надеюсь, что Google решит эту проблему. Очевидно, вы не можете использовать String или Collection of String в качестве типа возврата. Так что любое из следующего не получится:

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

Вместо этого вы должны создать оболочку, которая принимает строку или ее коллекцию в качестве поля; основной POJO.

Это потратило 10 часов моего времени. Я надеюсь, что это спасет следующего парня / парня от некоторых неприятностей.

Другие вопросы по тегам