我们正在使用GWT中的应用程序将服务器作为tomcat。 项目正常运行,但有些情况下服务器重新启动。在这个时间点,由下面的代码进行的ajax调用返回空白文本 状态代码为304
RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.POST, URL.encode(serverUrl)); //-- serverUrl is the url to which this call is posted to.
requestBuilder.setHeader("Content-Type", "application/x-www-form-urlencoded");
requestBuilder.setHeader("Expires","0");
requestBuilder.sendRequest(
postData,
new RequestCallback()
{
public void onError(Request request, Throwable exception)
{
//Do nothing
}
public void onResponseReceived(Request request, Response response)
{
//sometimes when the server is restarted, I get response.getStatusCode() = 304 and the response.getText() as blank
}
}
);
通常我们会在此响应文本中从服务器返回一些数据。当响应本身为空时,我们现在如何获取数据?
答案 0 :(得分:1)
HTTP 304表示服务器希望客户端使用页面的缓存副本。 HTTP规范表明响应体应该为304响应的情况下为空(参见see RFC 2616 section 10.3.5)。您是否收到304错误,因为服务器搞乱了,或者因为它确实希望客户端缓存响应?也许试试setting Cache-Control: no-cache
in your headers。
如果304状态与服务器搞乱有关,并且您无法让它们停止,那么您有两个选择:
retryTimesLeft
作为函数的参数)您选择的内容显然取决于您的应用的需求。