我的GWT服务器端代码上的http代理

时间:2013-03-12 14:14:09

标签: gwt

我有一个REST服务器作为后端,它提供了一组服务,它还使用基本身份验证方法进行访问。

现在我需要创建一个GWT前端,所以,我需要从GWT前端执行对REST后端的http调用

经过一番研究后,我发现HttpBuilder处理后端的http请求,但在尝试执行跨站点请求时似乎很痛苦,而且还附带了一些与Safari浏览器相关的限制。

然后我找到了这篇https://developers.google.com/web-toolkit/doc/latest/tutorial/Xsite文章,其中谈到了“你自己服务器上的代理”,所以它看起来是我正在寻找的解决方案,但我没有找到更多的信息,或者一个例子。它说我可以创建服务器端代码来从远程服务器(后端)下载数据,所以,我应该像 http客户端 >服务器端代码,并实现一组使用它来向后端发出请求的服务?如果是,如何处理用户身份验证和会话?如果没有,请给我一个亮点。

由于

1 个答案:

答案 0 :(得分:1)

   it seem to be a pain when trying to perform cross-site requests,  

实际上,如果我们可以在Servlet响应标头中设置,您可以从GWT RequestBuilder发出跨站请求

Response.setHeader( “访问控制允许来源”, “http://yourrestserviceur.com/url”);

should I create a http client like the apache client on server-side code, and implement 
a set of services that use it to make request to the backend?

不,不是必需的。使用RequestBuilder

RequestBuilder示例:

     RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);

        try {
          Request request = builder.sendRequest(null, new RequestCallback() {
            public void onError(Request request, Throwable exception) {
              displayError("Couldn't retrieve JSON");
            }

            public void onResponseReceived(Request request, Response response) {
              if (200 == response.getStatusCode()) {
                updateTable(asArrayOfStockData(response.getText()));
              } else {
                displayError("Couldn't retrieve JSON (" + response.getStatusText()
                    + ")");
              }
            }
          });
        } catch (RequestException e) {
          displayError("Couldn't retrieve JSON");
    }