【问题标题】:Restlet POSTing JSON to Appengine errorRestlet POSTing JSON to Appengine 错误
【发布时间】:2010-10-29 11:34:44
【问题描述】:

我们在 GAE 服务器以及 GWT 和 Android 客户端上有一个带有 Restlet 的小应用程序。 Restlet 向 GWT 客户端提供 GWT 序列化回复,向 Android 客户端提供 JSON。

本地和 AppEngine 生产服务器上的 GWT 序列化一切正常。

Android (JSON) 客户端与本地开发服务器通信一切正常。

Android 将 AppEngine 服务器用于生产环境,获取 JSON 回复,但 POST 失败。日志中没有错误或警告。服务器上的函数被调用,但传递的参数为空。

这是有问题的代码:

@Post("json")
public void createLocationJSON(Location location) {  // location is always null
    // do something with 'location'
}

【问题讨论】:

    标签: java google-app-engine rest restlet


    【解决方案1】:

    只是让大家知道:经过大量的摆弄,我设法让 GAE+Restlet+JSON+GWT 工作。这个过程真的很混乱(让我想起了为 Win32 编程的日子):我只是在更改设置,直到它开始工作。

    我遇到的问题是:

    1. 它向错误的客户端提供了错误的表示(JSON、XML、GWT)。后来事实证明,我必须注意类内部方法的顺序。什么鬼??
    2. 我无法让它在子路径上工作,例如/休息/*。

    出于以下原因,我不会使用 Restlet(提示作者):

    1. 文档稀缺、不准确且有时相互矛盾(在文档的不同部分以不同方式解释事物)。
    2. 配置不是标准的 JAX-RS。我知道他们可以选择将其配置为 JAX-RS,但文档中的所有示例都不是基于此。

    从那以后我切换到Jersey

    【讨论】:

    • 其实很好,直到 1.5 停止在 appengine 上工作(稍后通过配置解决):java.net/jira/browse/JERSEY-630
    • 与此同时,我们将其替换为 Resteasy,恕我直言,它有更好的文档。
    • 感谢您的研究!我刚刚开始并想使用这些框架之一......你会推荐 Resteasy 吗?
    • 是的,我愿意。一个不错的sw。
    【解决方案2】:

    您遇到了几个 Restlet 用户面临的 GAE 限制。

    前段时间,GAE 停止支持接受分块的 HTTP 实体。我们使用 POST 和 PUT 以及原始 GAE Servlet 重现了这个问题,因此这与 Restlet 无关。请参阅 GAE 问题: http://code.google.com/p/googleappengine/issues/detail?id=129

    我们发现的唯一解决方法是不对实体进行分块,这意味着能够提前计算它们的大小。

    在我们刚刚发布的 Restlet 2.1 M3 版本中,我们在 ClientResource 上添加了一个简单的“entityBuffering”属性来实现这一点(默认设置为“false”)。

    我们正在升级“第一个应用程序”示例以说明解决方法。我们还必须应对 GWT 2.2 与之前的 GWT 2.1 核心 API 的兼容性问题,因此 Restlet 2.1 只能在 GWT 上运行。

    此页面上提供了其他详细信息: http://wiki.restlet.org/docs_2.1/13-restlet/21-restlet/318-restlet/303-restlet.html

    最好的问候,

    杰罗姆

    Restlet ~ 创始人兼技术主管 ~ http://www.restlet.org

    Noelios Technologies ~ http://www.noelios.com

    【讨论】:

    • 嗨杰罗姆。感谢您的-1。非常优雅。我想补充几点:
    • 1.你的回复晚了几个月。当我需要帮助时,你在哪里?问题被标记为restlet,我希望你们能将 SO 作为开发人员的问答网站进行监控。
    • 2. GAE 问题是从 2008 年开始的。我在 2010 年 10 月遇到了问题。你有一个专门针对 GAE 的 Restlet 版本。为什么您不能在文档中明确说明存在严重问题?
    • 3. GWT 支持。 GWT 支持多种 RPC 机制,其中之一是基于 HTTP (= REST) 的纯 JSON。为什么必须插入非标准协议,Google 会反复更改?
    • -1 表示没有准确回复最初的问题。直接联系我们并建议我们跟踪 SO 或至少确保问题确实与 Restlet (在这种情况下为 GAE)有关也很好。我们尝试在我们自己的邮件列表/论坛中优先帮助我们的用户。现在,我们认识到 StackOverflow 的重要性,这种交流鼓励我们在这里监控并更加活跃,其他声誉损害显然可能很快发生;)请让我们现在停止这部分讨论。接下来我会回复技术点。最好的问候,杰罗姆
    猜你喜欢
    • 1970-01-01
    • 2022-12-27
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多