2013-01-20 34 views
0

我使用Java接收網站的HTML內容。但我無法收到所有的內容。有時,我收到以「...」結尾的內容,而不是內容的結尾。你能告訴我什麼是錯誤嗎?下面是我的代碼:我無法接收使用Java代碼的網站的所有HTML內容

public static String requestHtmlContent(String sUrl){ 
     URL url; 
     URLConnection connection; 
     StringBuilder strBuilder = new StringBuilder(); 
     BufferedReader reader; 
     try { 
      url = new URL(sUrl); 
      connection = url.openConnection(); 
      connection.setRequestProperty("User-Agent", "Mozilla/6.0 (Windows NT 6.2; WOW64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1"); 
      InputStream is = url.openConnection().getInputStream(); 
      reader = new BufferedReader(new InputStreamReader(is) ); 

      String line = null; 
      while((line = reader.readLine())!= null); { 
       line = reader.readLine(); 
       strBuilder.append(line +"\n"); 
      } 
      reader.close(); 

      return strBuilder.toString(); 

     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return strBuilder.toString(); 
    } 
+0

StackOverflow不是這個問題的適當位置。我們不做代碼調試。您需要進行自己的調試,如果您不確定爲什麼某些功能不能按預期工作,請在代碼中加上解釋您期望執行的操作的內容,以及實際執行的操作,包括所有錯誤消息。 –

回答

3

沒有實際測試你的代碼,我可以這樣說while循環肯定是犯罪嫌疑人:

while((line = reader.readLine())!= null); { 
    line = reader.readLine(); 
    strBuilder.append(line +"\n"); 
} 

while條件消耗來自讀者,永遠不會被處理的線。

+2

+1不錯。也因爲'StringBuilder'主要用於避免字符串連接'strBuilder.append(line +「\ n」)'應該是'strBuilder.append(line).append('\ n')' – Pshemo

+0

@bowmoer:但是我之前有getInputStream()。或者你可以給我一個解決方案。謝謝。 謝謝,Pshemo。 – huync

+0

只需從'while'內刪除'line = reader.readLine();',就可以處理條件中讀取的行。 – bowmore

相關問題