2016-05-15 81 views
0

我用Java編寫了一個簡單的程序,它向HTTP發送HTTP GET請求,讀取響應並在控制檯中顯示該響應的標頭。這裏是我的代碼:通過java發送的請求缺少HTTP標頭

 URL url= new URL(textBox.getText()); 
     socket = new Socket(url.getAuthority(), DEFAULT_PORT); 
     writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream())); 
     writer.println("GET " + url.getFile() + " HTTP/1.1"); 
     writer.println("Host: " + url.getAuthority()); 
     writer.println("User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:44.0) Gecko/20100101 Firefox/44.0"); 
     writer.println("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); 
     writer.println(""); 
     writer.flush(); 
     reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
     for (String line; (line = reader.readLine()) != null;) { 
      if (line.isEmpty()) break; 
      response.append(line + "\n"); 
     } 

Web服務器設置多個cookie,但我的代碼只顯示前幾個Set-cookie頭。

我在做什麼錯?

回答

0

對於加載網頁,瀏覽器會發送一系列HTTP請求。您可能只通過Java代碼發送第一個請求。如果通過某個Web瀏覽器發送相同的請求,它將呈現加載的頁面並觸發進一步的HTTP請求。隨後的這些請求可能會設置剩餘的Cookie。

我建議你比較這兩個響應(通過Java代碼和瀏覽器發送),你可以使用fiddler這個。

+0

好吧,我檢查使用HttpFox的Firefox和一些網絡服務器之間的流量,你是對的....謝謝你 –