我有部署在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
函数时,将调用RequestCallback实现中的onResponseReceived
,并返回空响应。使用Firebug进行分析时,POST请求状态报告为已中止。
答案 0 :(得分:2)
尽管您转向localhost,但这是CORS(跨源资源共享)。根据{{3}}不同的端口意味着不同的起源。 specification默认禁止跨域 XMLHTTPRequest 。您应该将 Access-Control-Allow-Origin 标头添加到服务器的响应中。有关详细信息,请阅读CORS规范的Modern browsers部分。