【发布时间】:2015-05-26 06:43:22
【问题描述】:
我有一个一个单独域上的前端应用程序,它与另一个域上的 Restlet 后端通信。到目前为止,CORS 工作正常,唯一的问题是 bean 序列化。
当我检查请求时,它有这个Accept 类型:application/x-java-serialized-object+gwt
但是由于某种原因,我不知道后端何时在 localhost 上运行,我的 GWT 应用程序在向/从后端(在 localhost)发送/接收数据时工作正常,但是当后端是部署在 GAE 云(即appspot.com)然后事情就坏了。它抛出422 Unprocessable Entity
有什么办法可以解决上述问题?
我认为这是一个 Restlet 框架错误(我不确定)。现在我想做的只是简单地摆脱序列化的 GWT 处理,并在 GWT ClientProxy 端使用 JSON 或 XML(application/json 或 application/xml),这可能吗?
这样我们拥有的同一个应用程序应该可以工作:
StuffResourceProxy stuffResource = GWT.create(StuffResourceProxy.class);
stuffResource.getClientResource().setReference("http://path.to/resource");
stuffResource.createStuff(model, new Result<Stuff>() {
@Override
public void onFailure(Throwable throwable) {
// handle error
}
@Override
public void onSuccess(Stuff stuff) {
// do thing with stuff
}
});
更新:
这是我尝试过的,添加:
stuffResource.getClientResource().getClientInfo().getAcceptedMediaTypes()
.add(new Preference<MediaType>(MediaType.APPLICATION_JSON));
GWT 客户端能够发送数据并且服务器能够存储它,但是从服务器到 GWT 客户端不起作用。
从请求头中可以看出GWT应用发送的Content-Type类型是application/x-java-serialized-object+gwt有没有办法强制Restlet ClientProxy改为发送application/json?
但是现在服务器可以在服务器端处理application/x-java-serialized-object+gwt POJO,问题是客户端无法转换来自服务器的application/json 响应。
【问题讨论】:
标签: java google-app-engine gwt restlet