1

我不明白为什么我的端点在 Google APIs Explorer 而不是 Android 上工作得很好。

https://developers.google.com/apis-explorer/?base=https://prncts.appspot.com/_ah/api#p/pronocities/v1.0.1/pronocities.content.get?id=aghzfnBybmN0c3IJCxIBZBj5zAMM&_h=1&

事实上,它几乎可以正常工作,因为我可以看到调用是对我的 GAE 端点服务器端进行的,并且用户通过 OAuth 进行了完美的身份验证。

数据发送回手机的方式似乎有问题。

以下是我在手机上收到的日志:

07-28 15:12:53.305: W/System.err(3034): com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
07-28 15:12:53.305: W/System.err(3034): {
07-28 15:12:53.305: W/System.err(3034):   "code": 400,
07-28 15:12:53.305: W/System.err(3034):   "errors": [
07-28 15:12:53.305: W/System.err(3034):     {
07-28 15:12:53.305: W/System.err(3034):       "domain": "global",
07-28 15:12:53.305: W/System.err(3034):       "message": "java.lang.IllegalArgumentException: name cannot be null or empty",
07-28 15:12:53.305: W/System.err(3034):       "reason": "badRequest"
07-28 15:12:53.305: W/System.err(3034):     }
07-28 15:12:53.305: W/System.err(3034):   ],
07-28 15:12:53.305: W/System.err(3034):   "message": "java.lang.IllegalArgumentException: name cannot be null or empty"
07-28 15:12:53.305: W/System.err(3034): }
07-28 15:12:53.305: W/System.err(3034):     at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:111)

正如您在 Google APIs Explorer 中看到的,发回的对象是一个非常简单的 POJO。

编辑1:

Android 端代码主要取自井字游戏示例:

settings = getSharedPreferences("PronoCities", 0);
credential = GoogleAccountCredential.usingAudience(
        this, "server:client_id:<myid>.apps.googleusercontent.com");
setAccountName(settings.getString(PREF_ACCOUNT_NAME, null));

Pronocities.Builder builder = new Pronocities.Builder(
        AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential);
service = builder.build();

任何帮助将不胜感激。

弗朗索瓦

使用 google-api-client-1.15.0-rc 库并在三星 Galaxy S3 / Android 4.1.2 上运行。

4

1 回答 1

2

该错误似乎来自 Datastore,而不是 Endpoints。请仔细检查 Explorer 和 Android 请求中的 URL 是否相同,并检查您在测试用例中进行的任何数据存储操作。特别是,检查以确保您创建的 Datastore Key 对象具有名称。

于 2013-07-29T22:33:02.430 回答