0

是否可以在 GWT 版本的 Restlet Client 中执行跨域请求?

我需要使用 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

4

2 回答 2

1

如果您需要调用另一个域上的服务,请使用标准 GWT RequestBuilder

例如,请参阅:GWT RequestBuilder - 跨站点请求

你仍然想使用RestyGwt。这是示例

看看JsonpRequestBuilder

于 2013-04-19T14:37:25.357 回答
0

我从未使用过Restlet,但它似乎在 GWT 中中继RequestBuilder。因此,由于RequestBuilder支持 CORS,gwt-restlet 应该这样做。

您可以毫无问题地将任何 GWT ajax 技术(RPC、RF 或 RequestBuilder)与 CORS 一起使用。认为 GWT 与任何其他 html/javascript 应用程序具有相同的限制,如果浏览器与 CORS 兼容(IE9 不兼容)并且服务器配置正确,则 CORS 将起作用。

话虽如此,我鼓励您尝试使用gwtquery,它为您提供了一种处理 ajax 的简单方法。通常,我使用gwtquery ajax来消费 3party 服务,因为它的语法和简单性。

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 数据绑定将响应映射到 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();
...
于 2013-04-19T17:40:36.263 回答