是否可以在Restlet Client的GWT版本中执行跨域请求?
我需要使用带有JSON数据的外部API消耗Rest资源(GET,POST,PUT,DELETE)。
我知道GWT的同源策略(SOP),但是这种限制可能存在解决方法......
不再提供包含GWT示例的Restlet文档。这链接例如:
http://wiki.restlet.org/docs_2.1/13-restlet/27-restlet/46-restlet/112-restlet.html
http://wiki.restlet.org/docs_2.1/13-restlet/275-restlet/144-restlet/189-restlet.html
答案 0 :(得分:1)
如果您需要使用标准GWT RequestBuilder来调用其他域上的服务。
答案 1 :(得分:0)
我从未使用Restlet
,但它似乎在GWT RequestBuilder
中传。因此,由于RequestBuilder
支持CORS,gwt-restlet应该这样做。
您可以将任何GWT ajax技术(RPC,RF或RequestBuilder)与CORS一起使用而不会出现问题。认为GWT与任何其他html / javascript应用程序具有相同的限制,如果浏览器与CORS兼容(IE9不兼容)并且服务器配置正确,则CORS将起作用。
说,我鼓励你试试gwtquery,它为你提供了一个简单的方法来处理ajax。通常,我使用gwtquery ajax来使用3方服务,因为它的语法和简单性。
gQuery语法的目标是你可以使用几乎jQuery示例并将它们移植到没有那么多努力的地方。
这是一个简单的例子:
ajax(Ajax.createSettings()
.setUrl("miservice.php")
.setDataType("json") // txt, json, jsonp, xml
.setType("get") // post, get
.setData($$("param1: 1, param2: 2")) // parameters in json, $$() creates json from string
.setSuccess(new Function(){ // callback to be run if the request succeeds
public void f() {
// The response when dataType=json is a javascript object (Properties)
Properties json = getDataProperties();
}
})
);
对于JSON(或XML),我使用gQuery databinding将响应映射到java对象。
例如:
interface Site extends JsonBuilder {
long getId();
String getUrl();
Site setId(long id);
Site setUrl(String url);
}
...
Site site = GWT.create(Site.class);
site.load(getDataProperties();
Window.alert(site.getUrl();
...