簡體   English   中英

HttpURLConnection不規則SocketException

[英]HttpURLConnection irregular SocketException

我編寫了一個Java程序,用於從任何網站的可選目錄中下載一些圖像。 一切工作正常,但有時無法繼續下載,但過一會引發SocketException。 這里是錯誤日志:

...
62.png downloaded
63.png downloaded
64.png downloaded
65.png downloaded
66.png downloaded
Exception in thread "main" java.net.SocketException: Unexpected end of file from server
    at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
    at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
    at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
    at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at java.net.URL.openStream(Unknown Source)
    at DownloadImage.main(DownloadImage.java:35)

文件不是問題。 有時它停在第5張圖片,有時停在第70張圖片。 這似乎是隨機的。

我懷疑與我嘗試訪問的網址的連接不均。 但是我該如何解決呢? 我試圖將連接和讀取超時設置為一個有趣的值

huc.setConnectTimeout(3600000);
huc.setReadTimeout(3600000);

但這並沒有解決。

有任何想法嗎? 還是我的問題有另一個根源?

我現在為我的問題找到了另一種解決方案。

SocketException由拋出

ReadableByteChannel rbc = Channels.newChannel(websiteUrl.openStream());

所以我建立了一個try'n'catch子句和一個while循環:

ReadableByteChannel rbc = null;
while (true) {
    try {
        rbc = Channels.newChannel(website.openStream());
        break;
    } catch (SocketException e) {
        System.out.println("connection failed");
    }
}

當然,它不能解決連接不良的問題,但是至少我現在可以在程序的一次運行中下載所有內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM