【问题标题】:Google Cloud Endpoints Parameter LimitationsGoogle Cloud Endpoints 参数限制
【发布时间】:2015-06-24 03:15:41
【问题描述】:

我正在使用 Google Cloud Endpoints 将数据从我的 Android 客户端应用程序返回到我的 Google App Engine 实例。
我似乎达到了参数大小限制并返回了 413 Full Head。 抛出的异常是: com.google.api.client.googleapis.json.GoogleJsonResponseException: 413 FULL head

参数是一个包含序列化 JSON 的字符串。长度方面,我传递给参数的字符串是 4226 个字符(Java 字符串)。 我已经用谷歌搜索并查看了其他一些 stackoverflow 答案,但没有一个直接处理长度问题。 据我了解,我还没有达到 POST 数据限制,但我找不到任何说明 API 参数限制的 Google 文档。

非常感谢任何帮助。

【问题讨论】:

  • 你为什么不分享你的代码?
  • @ApiMethod(name = "saveCompletedForm") public SaveFormResponse saveCompletedForm(@Named("formid") Long formid, @Named("parentkey") String parentKey, @Named("formjson") String formJSON, @Named("username") String userName, @Named("pwd") String password) { ... 所以 formjson 参数是达到限制的参数。但是,我在@ApiMethod 中进一步阅读并看到如果返回一个实体,您将它作为 Bean 直接传递给方法,而不是作为 @Named 参数(这就是为什么它在传递为URL 上的查询参数。)

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


【解决方案1】:

我找到了答案。我使用@Named 参数传回我的json。这意味着API 在URL 上使用了超出URL 长度限制的查询参数。

仔细阅读这篇文章https://cloud.google.com/appengine/docs/java/endpoints/annotations#apimethod_method-scoped_annotations 我意识到对于实体(和长字符串),我应该简单地返回实体而不是使用@Named 参数。

我将代码更改为

@ApiMethod(name = "saveCompletedForm", httpMethod=HttpMethod.POST)
        public SaveFormResponse saveCompletedForm(FullFormBean formBean, @Named("username") String userName, @Named("pwd") String password)
        {...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 2014-09-12
    • 2013-05-26
    • 2017-01-07
    • 1970-01-01
    相关资源
    最近更新 更多