簡単な問題:
onResponseReceive getStatusCode
304 ではなく 200 を返します。Fiddler は、応答ステータスコードが 304 であることを教えてくれます。
どうすればいいですか: サーバーに新しいデータがないか常にポーリングします (10 秒ごと)。データが変更されていない場合は 304 で応答し、そうでない場合は 200 とデータ全体で応答します。onResponseReceived メソッドでは、statuscode は常に 200 で、データは常に存在します。
304 を取得する方法を教えてください。 If-Modified-Since について読んだことがありますが、これによりデータ全体が (コード 200 で) 再送信されますが、実際には 304 が必要です。変更されたかどうかを確認します。
GWT コード:
RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.GET,
dataUrl);
requestBuilder.setHeader("_____", "none");
requestBuilder.setHeader("_______", "_________");
requestBuilder.setCallback(new RequestCallback() {
@Override
public void onResponseReceived(Request request, Response response) {
PrintResponse.printResponse(response, "EntryPoints");
if (response.getStatusCode() == 200) {.....}
}
@Override
public void onError(Request request, Throwable exception) {
}
});
try {
requestBuilder.send();
} catch (RequestException e) {
e.printStackTrace();
}
応答:
HTTP/1.1 304
Content-Type: application/json
Cache-Control: max-age=0
Content-Length: 0
Date: Thu, 19 Apr 2012 10:49:10 GMT
Server: ________
Connection: Keep-Alive
Keep-Alive: timeout=60
よろしく、 ステファン