2013-05-15 54 views
1

我讀從一個網站源通過在Java中建立一個合法的連接,就像這樣:HTTP協議中的這些奇怪的線是什麼?

 final Socket sock = new Socket(hostname, 80); 
     PrintWriter writer = new PrintWriter(sock.getOutputStream(), true); 
      writer.println("GET /path HTTP/1.1"); 
      writer.println("Host: " + hostname); 
      writer.println(); 
//... 
      while (!sock.isClosed() && (line = reader.readLine()) != null) { 
       System.out.println(line); 
      } 

和它的作品不錯,但也有一些怪異的線路輸出,當我瀏覽其中不存在該網站與 - 說 - 火狐。

問題是某些源代碼行被一些隨機的不同信息中斷,我不知道爲什麼我會得到那樣的信息來毀掉我的源代碼。

<div clas 
16d0 
s="span5"> 

<td style="text-align:c 
2000 
enter; vertical-align:middle">information</td> 

這是什麼,如何解決?

+1

分塊轉碼。您可以通過使用HTTP客戶端庫或自己正確實施HTTP來解決此問題。 – CodeCaster

+0

[爲什麼HTTP響應主體在開頭包含「2fb」?](http://stackoverflow.com/questions/14955994/why-does-the-http-response-body-contain-2fb-at - 開始) – CodeCaster

回答

3

看起來服務器正在向您發送分塊數據。你能發送HTTP/1.0而不是1.1嗎?這應該確保沒有對響應進行分塊。

+0

這似乎工作到目前爲止,並且是最快捷的方法 – user2015253

1

您正在讀取套接字中的HTTP流raw,而不是使用現有的HTTP閱讀器。

如果你真的想這樣做,你應該閱讀HTTP specification。在你的情況尤其是宗派。 3.6關於分塊轉移。