如何从 GWT 上的 php 网络服务获得有效响应

how to get a valid response from a php web service on GWT

我正在尝试从我的 GWT 应用程序客户端的 php Web 服务(我已将其放入我的本地主机 - 经过测试并且工作正常)获取数据。

我试过使用以下包 com.google.gwt.http.client.* 看起来代码工作正常,但响应始终为 0,这很可能是交叉问题,但我仍然不知道如何解决即使我尝试使用 requestBuilder.setHeader(..);

也能解决它

这是我正在处理的代码:

    String url = "http://localhost/geoTrackerTest.php?id=15";
    RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.GET, URL.encode(url));

    requestBuilder.setHeader("Access-Control-Allow-Origin", "http://localhost");
    requestBuilder.setHeader("Access-Control-Allow-Methods", "POST, GET, UPDATE, OPTIONS");
    requestBuilder.setHeader("Access-Control-Allow-Headers", "x-http-method-override");

    try {
        Request request = requestBuilder.sendRequest(null, new RequestCallback() {
          public void onError(Request request, Throwable exception) {
             GWT.log("Error: "+exception.getMessage());
          }

          public void onResponseReceived(Request request, Response response) {

            if (200 == response.getStatusCode()) {
                GWT.log("response: "+response.getText());
            } else {
                GWT.log("response code: "+response.getStatusCode());
            }

          }
      });
    } catch (RequestException e) {
      GWT.log("Request Exception: "+e.getMessage());
    }

我仍然收到 0 作为响应。

您需要在服务器端(而不是 GWT 客户端)设置响应头,然后您可以从 GWT RequestBuilder 发出跨站请求。服务器端是这样的:

Response.setHeader("Access-Control-Allow-Origin","http://localhost");

如果只需要发送GET请求,可以使用JSONP(http://www.gwtproject.org/javadoc/latest/com/google/gwt/jsonp/client/JsonpRequestBuilder.html)代替发送跨域请求,无需在服务器端设置headers。