【问题标题】:SSL peer shut down incorrectlySSL 对等体错误关闭
【发布时间】:2015-04-09 17:09:25
【问题描述】:

这是我在这里的第一篇文章。我是业余爱好者,请多多包涵。

我正在尝试使用以下代码从https://eztv.it/shows/1/24/ 抓取网页。

public static void WriteHTMLToFile(String URL){
    try {

        URI myURI=new URI(URL);
        URL url = myURI.toURL();
        HttpsURLConnection con= (HttpsURLConnection)url.openConnection();
        File myFile=new File("c:\\project\\Test.txt");
        myFile.createNewFile();
        FileWriter wr=new FileWriter(myFile);
        InputStream ins=con.getInputStream();
        InputStreamReader isr= new InputStreamReader(ins);
        BufferedReader reader = new BufferedReader(isr);
        String line;
        while ((line = reader.readLine()) != null) {
            wr.write(line+"\n");    
        }

        reader.close();
        wr.close();
    }
    catch(Exception e){
        log(e.toString());
        }   
}

当我运行它时,我得到以下信息:

javax.net.ssl.SSLException: SSL peer 错误关闭

如果我在此 URL 上运行上述代码:https://eztv.it/shows/887/the-blacklist/,它会按预期工作。两个 URL 文件大小之间的差异似乎是一个促成因素。在测试到同一服务器的不同 URL 时,上面的代码似乎只适用于小于 ~30Kb 的文件。任何超过都会产生上述异常。

【问题讨论】:

    标签: java ssl


    【解决方案1】:

    我想通了。一旦文件大小超过一定大小,服务器就会使用 gzip 编码进行响应。

    con.setRequestProperty("Accept-Encoding", "gzip, deflate, sdch");

    已添加到请求标头以及一些处理 gzip 流的代码。

    【讨论】:

    • 你的意思是服务器关闭超过一定大小的连接除非你允许它使用gzip编码?
    猜你喜欢
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 2015-05-08
    • 1970-01-01
    • 2013-05-19
    相关资源
    最近更新 更多