gpt4 book ai didi

java - 如何处理 "Unexpected end of file from server"?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:17:42 25 4
gpt4 key购买 nike

我想用Jsoup爬取from的内容 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 访问 url 时,一切正常。另外,当我用上面的代码爬取http://ws.audioscrobbler.com/2.0/?method=track.getInfo&api_key=550633c179112c8002bc6a0942d55b2a&artist=cher&track=believe的内容时, 也一切正常。

你能知道原因和解决它的好主意吗?

感谢您的关注,抱歉我的英语不好。

感谢 NeplatnyUdaj 的热心帮助,给了我很好的提示。我忘记用 %20、%26 等替换空格和其他特殊符号。

最佳答案

嗯。该异常表示远程服务器意外关闭了连接。

下面的答案假定问题代码 URL 中所有可见的空格实际上并不存在于您的代码中。

除了捕获异常并重试(或向用户报告错误)之外,您实际上无能为力。

至于为什么服务器关闭连接:

  • 它不喜欢你的请求(重试在这里无济于事),查看 audioscrobbler 的文档
    • 主机 header 是否存在且正确(在您的示例中它是不正确的,因为其中有空格)?
    • 是否必须包含其他 header 才能发出有效请求?
    • 该 API key 是否正确?
  • 服务器当前可能有问题(导致它丢弃请求,这是重试可能有帮助的地方)
  • 它认为您向它提出了太多问题,并且已经启用了一些反垃圾邮件保护措施(这是重试会造成伤害的地方)。

相关说明:在问题中包含 API key 可能不是最佳选择。

关于java - 如何处理 "Unexpected end of file from server"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17274752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com