Использование jsoup для получения java. net .SocketTimeoutException: чтение исключения по тайм-ауту - PullRequest
0 голосов
/ 06 января 2020

Использование 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)

Ответы [ 2 ]

1 голос
/ 06 января 2020

Исходя из этого ответа, 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();
0 голосов
/ 06 января 2020

Возможно, проблема связана с

  1. Убедитесь, что вы подключены к inte rnet. Попробуйте открыть тот же URL в браузере и посмотреть, откроет ли он страницу. или из вашей виртуальной машины, способной достичь этого URL, простые методы curl / wget

  2. Укажите большее время ожидания соединения Jsoup до получения документа, как указано ниже.

Ссылка: https://www.javacodeexamples.com/jsoup-sockettimeoutexception-read-timed-out-connect-timed-out-fix/775

...