2017-01-09 6 views
1

Я использую jsoup для очистки данных с веб-сайтов. Я хочу знать, какое исключение будет выбрано, когда веб-сайт, откуда я очищаю данные, не работает.
Это SocketException или NoHttpResponseException или любым другим?
Я читал, что NoHttpResponseException бросается, когда сервер получает запрос, но он не ответил на него, это правильно?Какое исключение выбрасывается, когда сайт не работает?

+0

Я думаю, что это должно быть 'RequestTimeoutException', поскольку клиент не может установить соединение за указанный тайм-аут. –

+0

Направьте свою программу на веб-сайт вниз и посмотрите сами. Вот один из них, например: http://cocacola.com:8989/ –

ответ

1

Я проверил наш собственный веб-сайт, после того, как я беру вниз Tomcat я получаю следующее java.net.SocketTimeoutException:

java.net.SocketTimeoutException: connect timed out 
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
    at java.net.Socket.connect(Socket.java:589) 
    at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:668) 
    at sun.net.NetworkClient.doConnect(NetworkClient.java:175) 
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:432) 
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:527) 
    at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264) 
    at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367) 
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191) 
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1138) 
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1032) 
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177) 
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153) 
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:563) 
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:540) 
    at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:227) 
    at org.jsoup.helper.HttpConnection.get(HttpConnection.java:216) 
    at testing.Test.main(Test.java:19) 

Это код, который я использовал:

public static void main(String[] args) { 
    try { 
     Document document = Jsoup.connect("https://example/folder").validateTLSCertificates(false).timeout(1000).get(); 
     System.out.println(document); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

NoHttpResponseException, кажется, апач HttpClient исключение (org.apache.commons.httpclient.NoHttpResponseException). Поскольку Jsoup не имеет зависимостей apache, вероятно, ответ будет SocketTimeoutException.