簡體   English   中英

使用 jsoup 獲取 java.net.SocketTimeoutException:讀取超時異常

[英]Using jsoup getting java.net.SocketTimeoutException: Read timed out exception

使用 jsoup 獲取 java.net.SocketTimeoutException:讀取超時異常

private static void getNiftyFutureOIReader() {
        String url = "https://www1.nseindia.com/live_market/dynaContent/live_watch/get_quote/GetQuoteFO.jsp?underlying=NIFTY&instrument=FUTIDX&type=-&strike=-&expiry=30JAN2020";
        Document doc = null;
        try {
            doc = Jsoup.connect(url).timeout(15*1000).get();
            Element content = doc.getElementById("responseDiv");
            String jsonCont=content.html();
            System.out.println(jsonCont);

                } catch (IOException e) {
            e.printStackTrace();

        }

    }

我正在使用 Jsoup 調用網站 url 並讀取其內容,使用 jsoup 獲取 java.net.SocketTimeoutException:讀取超時異常

error log

java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.socketRead(Unknown Source)
    at java.net.SocketInputStream.read(Unknown Source)
    at java.net.SocketInputStream.read(Unknown Source)
    at sun.security.ssl.InputRecord.readFully(Unknown Source)
    at sun.security.ssl.InputRecord.read(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
    at sun.security.ssl.AppInputStream.read(Unknown Source)
    at java.io.BufferedInputStream.fill(Unknown Source)
    at java.io.BufferedInputStream.read1(Unknown Source)
    at java.io.BufferedInputStream.read(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.getInputStream0(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at java.net.HttpURLConnection.getResponseCode(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source)
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:750)
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:722)
    at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:306)
    at org.jsoup.helper.HttpConnection.get(HttpConnection.java:295)
    at code.test.BankNiftyFutureOIReader.getNiftyFutureOIReader(BankNiftyFutureOIReader.java:19)
    at code.test.BankNiftyFutureOIReader.main(BankNiftyFutureOIReader.java:53)

基於這個答案, JSoup UserAgent,如何正確設置? ,也許可以試試網站是否正在檢查 UserAgent 或其他標頭以驗證您不是機器人。 我希望“實時報價”網頁有這樣的對策。

Response response= Jsoup.connect("https://www1.nseindia.com/live_market/dynaContent/live_watch/get_quote/GetQuoteFO.jsp?underlying=NIFTY&instrument=FUTIDX&type=-&strike=-&expiry=30JAN2020")
       .ignoreContentType(true)
       .userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0")  
       .referrer("https://www.nseindia.com")   
       .timeout(15_000) 
       .followRedirects(true)
       .execute();
// TODO: verify Response status code here!
Document doc = response.parse();

問題可能是由於

  1. 確保您已連接到互聯網。 嘗試在瀏覽器中打開相同的 URL,看看它是否打開了頁面。 或從您的 VM 能夠訪問該 url 簡單 curl / wget 方法

  2. 在獲取文檔之前指定更多 Jsoup 連接超時,如下所示。

參考: https : //www.javacodeexamples.com/jsoup-sockettimeoutexception-read-timed-out-connect-timed-out-fix/775

暫無
暫無

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

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