[英]how to deal with “Unexpected end of file from server”?
我想使用Jsoup来抓取来自http://ws.audioscrobbler.com/2.0/?method=track.getInfo&api_key=550633c179112c8002bc6a0942d55b2a&artist=lucinda%20williams&track=lake%20charles的内容
代码是:
Document doc = Jsoup.connect("http://ws.audioscrobbler.com /2.0/?method=track.getInfo&api_key=550633c179112c8002bc6a0942d55b2a&artist=lucinda williams&track=lake charles")
.userAgent("Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:20.0) Gecko/20100101 Firefox/20.0")
.timeout(5000)
.get();
但是,出现了错误:
Exception in thread "main" java.net.SocketException: Unexpected end of file from server
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:770)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633)
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:767)
at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1162)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:397)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:429)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:410)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:164)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:153)
at JsoupXML.main(JsoupXML.java:16)
但是,当我使用brwoser访问网址时,eveything就可以了。 此外,当我使用上面的代码来抓取http://ws.audioscrobbler.com/2.0/?method=track.getInfo&api_key=550633c179112c8002bc6a0942d55b2a&artist=cher&track=believe的内容时,一切都还可以。
你能知道原因和解决它的好主意吗?
感谢您的关注,对不起我的英语。
感谢NeplatnyUdaj的友好帮助,你给我一些精彩的暗示。 我忘了用%20,%26等替换whitspace和其他特殊符号。
好。 该异常表示远程服务器意外关闭了连接。
下面的答案假设问题代码URL中可见的所有空格实际上都不在您的代码中。
除了捕获异常并再次尝试(或向用户报告错误)之外,您无能为力。
至于为什么服务器关闭了连接:
相关说明:在问题中包含API密钥可能不是最佳的。
更改用户代理(或至少定义它)。
更多细节: 刮痧网站
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.