如何从 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。
我正在尝试从我的 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。