2013-02-07 57 views
1

我有一个REST Web服务,这些服务由vert.x中部署的应用程序公开,我试图从GWT应用程序访问它。得到了一些回应,但是有一个空的身体。无法从gwt应用程序访问vert.x中部署的应用程序公开的Web服务

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

GWT中除了正常的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请求状态报告为Aborted

+0

你能改正http4e的错字吗? – SSR

回答

2

尽管你转向本地主机,这是CORS(跨源资源共享)。根据specification不同的端口意味着不同的起源。 Modern browsers默认情况下禁止跨域XMLHTTPRequest。您应该将访问控制 - 允许来源标头添加到服务器的响应中。请阅读CORS规范的Syntax部分以获取更多信息。

+0

我认为客户端请求中存在一些问题。当调用'sendRequest'函数时,会调用RequestCallback实现中的'onResponseReceived',并返回空响应。请参阅编辑。 –

+0

是的,它看起来像CORS的工作方式。您可以通过在您的用户代理中禁用CORS安全性来看到这一点。如果您使用google chorme,请使用选项'--disable-web-security'运行。 – cardamo

+0

在** https ** POSTing中使用'RequestBuilder'是否存在任何问题? –