我们在GAE服务器和GWT以及Android客户端上有一个使用Restlet的小应用程序。 Restlet为GWT客户端提供GWT序列化回复,为Android客户端提供JSON。
本地和AppEngine生产服务器上的GWT序列化都可以。
Android(JSON)客户端与本地开发服务器通信,一切正常。
Android采取生产AppEngine服务器GETs JSON回复,但POST失败。日志中没有错误或警告。调用服务器上的函数,但传递的参数为null。
这是有问题的代码:
@Post("json")
public void createLocationJSON(Location location) { // location is always null
// do something with 'location'
}
答案 0 :(得分:3)
只是为了让大家都知道:我设法让GAE + Restlet + JSON + GWT在经过多次摆弄之后工作。这个过程非常混乱(让我想起为Win32编程的日子):我只是在更改设置直到它开始工作。
我遇到的问题是:
由于以下原因,我不打算使用Restlet(暗示作者):
从那时起,我切换到Jersey。
答案 1 :(得分:1)
您遇到了几个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')。
我们正在升级“First Application”示例以说明解决方法。我们还必须应对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