В основном я пытаюсь загрузить HTML-содержимое веб-страницы. Метод очень простthread зависает в socketRead0 Java
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
BufferReader in = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
String line;
StringBuilder pageBuilder = new StringBuilder();
while ((line = in.readLine()) != null) {
pageBuilder.append(line + "\n");
}
Но иногда программа просто висит. Я пытался отлаживать, и трассировка стека потоков сообщает мне, что она зависает при вызове метода SocketRead0. Я попытался установить время ожидания для подключения, но он не работает. Любые идеи о том, как я могу обнаружить и пройти через блок SocketRead0?
Редактировать: Похоже, что проблема, которую я действительно имею, заключается в том, что getReponseCode неявно вызывает некоторые методы getInputStream и некоторые методы read(), а затем зависает при readSocket0(). В любом случае, я могу убедиться, что вызов getReponseCode() будет безопасным? Вот трассировка стека один нити подвешивания: Level 0 это самый последний вызов
thread 24stacktrace
At 0level
at method socketRead0
at line -2
At 1level
at method read
at line 129
At 2level
at method fill
at line 218
At 3level
at method read1
at line 258
At 4level
at method read
at line 317
At 5level
at method parseHTTPHeader
at line 687
At 6level
at method parseHTTP
at line 632
At 7level
at method getInputStream
at line 1200
At 8level
at method getResponseCode
at line 379
At 9level
at method pushFinalRedirectedURL
at line 132
At 10level
at method process
at line 134
At 11level
at method run
at line 40
как примечание стороны, этот код будет потенциально искажать загруженный веб-страницы. вы должны использовать кодировку веб-страницы для правильной настройки InputStreamReader. – jtahlborn