2011-07-21 41 views
1

我試圖四處尋找類似的問題,但無法找到類似於我的問題的任何解決方案閱讀:java.io.EOFException的:ZLIB輸入流意外結束 - 從HTTP

我用下面這段代碼從HttpURLConnection類閱讀:

HttpURLConnection con = null; 
reader = Utils.getConnectionReader(con, "http://www.site.com/page.html"); 
String line = null; 
while ((line = reader.readLine()) != null) { 
    log.info(line); 
} 

有時我所提到的例外:在下列方式進行

public static BufferedReader getConnectionReader(HttpURLConnection con, String url) 
     throws Exception { 
    con = (HttpURLConnection) new URL(url).openConnection(); 
    con.connect(); 
    if (cm != null) { 
     cm.storeCookies(con); 
    } 
    if (con.getHeaderField("Content-Encoding") != null 
      && con.getHeaderField("Content-Encoding").equalsIgnoreCase("gzip")) { 
     return new BufferedReader(new InputStreamReader(new GZIPInputStream(con.getInputStream()))); 
    } else 
     return new BufferedReader(new InputStreamReader(con.getInputStream())); 
} 

閱讀

java.io.EOFException的:ZLIB輸入流意外結束

當我可以,我捕獲這個異常並重試操作 - 成功。

的問題是,我不知道是什麼原因造成這個異常流行。 它發生得非常隨機。

我願意相信這是一個網絡問題。

任何人發現了一種完全解決這樣的問題呢?

謝謝!

回答

0

您使用的方法不是很理想的二進制格式一樣的GZip,我假設你正在做的只是用於測試?除此之外,還有HTTPURLConnection的錯誤,代碼中沒有其他可能導致問題的其他內容。我會建議使用字節緩衝區交換讀取,至少消除這個錯誤的可能來源。

+0

謝謝大家的響應。 我使用這段代碼來閱讀html頁面 - 文本頁面。 大部分都沒有壓縮。 你是什麼意思關於與HttpURLConnection類的錯誤? 再次感謝。 – tzafrir

+0

@tzafrir - 你正在聲明一個空的變量* con *並將它傳遞到你的函數中,並初始化它。如果您打算使用該* con *對象,那麼請注意,當控制權返回給函數時,它不會被初始化,因爲Java是按值傳遞的。但是,如果你不打算使用它,那麼它們不需要首先將它傳遞給函數。 – Perception

+0

謝謝我意識到這一點。它有我目前不記得的原因.. – tzafrir