Java アプリと Web サイトを通信する必要があります。何らかの理由で、利用可能な HttpServer クラスを使用することにしました。(私は本当にPHPを知りません)。私はこの質問を見ました: Java SE APIのみを使用したJavaの単純なHTTPサーバー
これは私が使用した HttpHandler コードです:
public class NexusHttpHandler implements HttpHandler{
private String response;
public NexusHttpHandler(String response){
this.response=response;
}
@Override
public void handle(HttpExchange he) throws IOException {
System.out.println("I am called!");
System.out.println(he.getRequestHeaders().keySet());
System.out.println(he.getRequestHeaders().values());
he.sendResponseHeaders(200, response.length());
OutputStream os = he.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
何らかの理由で、ページが更新されるたびに「I am called」が 2 回呼び出されます。これは完全な出力です:
I am called!
[Cache-control, Host, Accept-encoding, Connection, Accept-language, User-agent, Accept]
[[max-age=0], [localhost:8080], [gzip,deflate,sdch], [keep-alive], [ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4], [Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36], [text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8]]
I am called!
[Host, Accept-encoding, Connection, Accept-language, User-agent, Accept]
[[localhost:8080], [gzip,deflate,sdch], [keep-alive], [ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4], [Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36], [*/*]]
誰かがなぜそれが2回呼び出されるのか教えてもらえますか? キャッシュに関連しているようで、Http プロトコルについて何かを読む必要があります。それぞれのリクエスト タイプをどのように識別すればよいですか? それらにどのように対処すればよいですか?