Restlet GWT客户端和请求跨域

时间:2013-04-19 13:54:16

标签: rest gwt restlet restlet-2.0

是否可以在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

2 个答案:

答案 0 :(得分:1)

如果您需要使用标准GWT RequestBuilder来调用其他域上的服务。

参考例如:GWT RequestBuilder - Cross Site Requests

仍然想要使用RestyGwt。这是Example

并查看JsonpRequestBuilder

答案 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();
...