我需要溝通我的Java應用程序和我的網站。出於某種原因,我選擇使用HttpServer類。 (我真的不知道PHP)。我看了看這個問題:simple HTTP server in Java using only Java SE APIJava HttpServer。 HttpHandler調用兩次
這是我用的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!
[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], [*/*]]
有人能告訴我爲什麼它被稱爲兩次?它看起來像與緩存相關,我必須閱讀一些關於Http協議的內容。我應該如何識別每種請求類型?我應該如何處理它們?
來吧好友,瀏覽器總是第一次發送兩個請求,一個是獲取實際的url數據,另一個是獲取/favicon.ico資源,它是小圖標,就像你看到的堆棧溢出的 – 2013-07-14 21:46:11
那麼,我從來不知道。我從來沒有看過網絡編程 – black