1

我有一个由部署在 vert.x 中的应用程序公开的 REST Web 服务,我正在尝试从 GWT 应用程序访问它。获得了一些响应,但主体为空。

当我使用 http4e 访问服务时,它会给出预期的响应。

除了 GWT 中的普通 Web 服务访问代码之外,是否还有任何必需的配置?下面给出的是 Web 服务访问的代码:

final RequestBuilder requestBuilder = new RequestBuilder(
                RequestBuilder.POST, "https://localhost:80/login");
requestBuilder.setHeader("Content-Type", "text/plain");
requestBuilder.sendRequest("{\"userId\":\"" + username
                    + "\",\"password\":\""
                    + password + "\"}",
                    new RequestCallback() {

                        @Override
                        public void onResponseReceived(Request request,
                                    Response response) {
                                System.out.println("response:"
                                        + response.getText());
                            }

                            @Override
                            public void onError(Request request,
                                    Throwable exception) {
                                System.out.println("ex:"
                                        + exception.getMessage());
                            }
                        });

编辑:我认为客户端请求存在一些问题。当sendRequest函数被调用时,onResponseReceived在 RequestCallback 实现中被调用,响应为空。当我使用 Firebug 进行分析时,POST 请求状态报告为Aborted 。

4

1 回答 1

2

尽管您转向 localhost,但这是 CORS(跨域资源共享)。根据规范,不同的端口意味着不同的来源。现代浏览器默认禁止跨域XMLHTTPRequest。您应该将Access-Control-Allow-Origin标头添加到服务器的响应中。阅读 CORS 规范的语法部分以获取更多信息。

于 2013-02-08T03:37:06.960 回答