【发布时间】:2016-05-11 11:10:16
【问题描述】:
在 Android 中,我有多个线程使用 Jsoup 执行 HTML 解析。
我的连接代码是:
Jsoup.connect(url).userAgent(this.userAgent).timeout(10 * 1000).get();
其中this.userAgent 等于最新的Mozilla 用户代理-"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1"。
现在当我指定 10000 毫秒时,我怎么会得到这个参数为 7000 毫秒的 SocketTimeoutException?
我还尝试将超时设置为无限timeout(0),但我仍然得到这个Exception。
LogCat:
05-11 13:49:45.582 11796-12561/com.dl.master.lyrics.lyricsmaster W/System.err: java.net.SocketTimeoutException: failed to connect to www.songlyrics.com/23.252.119.106 (port 80) after 7000ms
05-11 13:49:45.582 11796-12561/com.dl.master.lyrics.lyricsmaster W/System.err: at libcore.io.IoBridge.connectErrno(IoBridge.java:169)
05-11 13:49:45.583 11796-12561/com.dl.master.lyrics.lyricsmaster W/System.err: at libcore.io.IoBridge.connect(IoBridge.java:122)
05-11 13:49:45.583 11796-12561/com.dl.master.lyrics.lyricsmaster W/System.err: at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
05-11 13:49:45.583 11796-12561/com.dl.master.lyrics.lyricsmaster W/System.err: at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:456)
05-11 13:49:45.583 11796-12561/com.dl.master.lyrics.lyricsmaster W/System.err: at java.net.Socket.connect(Socket.java:882)
05-11 13:49:45.583 11796-12561/com.dl.master.lyrics.lyricsmaster W/System.err: at com.android.okhttp.internal.Platform.connectSocket(Platform.java:139)
05-11 13:49:45.583 11796-12561/com.dl.master.lyrics.lyricsmaster W/System.err: at com.android.okhttp.Connection.connect(Connection.java:148)
05-11 13:49:45.583 11796-12561/com.dl.master.lyrics.lyricsmaster W/System.err: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:276)
05-11 13:49:45.583 11796-12561/com.dl.master.lyrics.lyricsmaster W/System.err: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:211)
05-11 13:49:45.583 11796-12561/com.dl.master.lyrics.lyricsmaster W/System.err: at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:373)
05-11 13:49:45.583 11796-12561/com.dl.master.lyrics.lyricsmaster W/System.err: at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:106)
05-11 13:49:45.583 11796-12561/com.dl.master.lyrics.lyricsmaster W/System.err: at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:512)
05-11 13:49:45.583 11796-12561/com.dl.master.lyrics.lyricsmaster W/System.err: at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:493)
05-11 13:49:45.583 11796-12561/com.dl.master.lyrics.lyricsmaster W/System.err: at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:205)
05-11 13:49:45.583 11796-12561/com.dl.master.lyrics.lyricsmaster W/System.err: at org.jsoup.helper.HttpConnection.get(HttpConnection.java:194)
05-11 13:49:45.583 11796-12561/com.dl.master.lyrics.lyricsmaster W/System.err: at com.dl.master.lyrics.lyricsmaster.GetSongLyricsDotComResults.getParsedDocument(GetSongLyricsDotComResults.java:183)
05-11 13:49:45.583 11796-12561/com.dl.master.lyrics.lyricsmaster W/System.err: at com.dl.master.lyrics.lyricsmaster.GetSongLyricsDotComResults.getSongLyricsDotComResults(GetSongLyricsDotComResults.java:87)
05-11 13:49:45.583 11796-12561/com.dl.master.lyrics.lyricsmaster W/System.err: at com.dl.master.lyrics.lyricsmaster.GetSongLyricsDotComResults.run(GetSongLyricsDotComResults.java:42)
getParsedDocument() 执行我的Jsoup 连接。
编辑: 留下不匹配的 ms。
即使我将超时设置为无限,为什么我得到这个SocketTimeoutException?
编辑#2:
不得不说我与Jsoup API 合作了很长时间,并且从未使用过UserAgent 或Timeout,我决定添加它们。在我将UserAgent 和Timeout 添加到我的连接方法后,问题开始出现。
【问题讨论】:
-
Jsoup.connect(url)....请告诉url的值。 -
@greenapps 其实我不知道值。有很多值。你是在告诉我
Exception是因为 URL 格式错误而被抛出的? -
@greenapps 但网址的格式为
www.lyricsplanet.com/66.240.174.52, -
网址应该以 http:// 开头。
-
重启电脑。休息一下。
标签: android timeout jsoup user-agent socket-timeout-exception