使用java从url下载文件时出现异常

时间:2016-06-23 14:25:16

标签: java ssl

我有以下java代码从https网址下载文件

        InputStream in = null;
        OutputStream out = null;
        try {
            HttpURLConnection httpcon = (HttpURLConnection) sourceURL
                    .openConnection();
            httpcon.setRequestProperty(
                    "User-Agent",
                    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.29 Safari/537.36");

            in = httpcon.getInputStream();
            out = new FileOutputStream(target);

            OtherUtils.bufStreamCopy(in, out, 64);

            out.flush();
            out.close();
            in.close();
        } catch (IOException ioe) {
            debugMsg("FAIL: IO Exception caught.");
            if (out == null)
                debugMsg("out = null.");
            if (in == null)
                debugMsg("in == null");
            throw new IOException(ioe.getMessage());
        }

我可以在某些机器上使用上面的代码成功下载文件。 但是在某些机器上会抛出像

这样的异常

握手期间远程主机关闭连接

java.net.SocketException:连接重置

java.net.SocketException:管道损坏

获取输入流时会抛出这些异常

in = httpcon.getInputStream();

导致上述异常的代码有什么问题,请帮帮我

提前致谢

1 个答案:

答案 0 :(得分:0)

没有您的代码问题

这不是你机器的问题,因为

  

握手期间远程主机关闭连接

连接的服务器将发生

,关闭连接。

更多关于TCP handshakehttp://www.inetdaemon.com/tutorials/internet/tcp/3-way_handshake.shtml

的信息

当您作为客户端仅直接发送 ACK 而没有首先 SYN cing服务器时,必须发送重置标志。

以下是一个快速的问题:http://3.bp.blogspot.com/_AamnZyf3C_A/TBvQXqrnqII/AAAAAAAAAY0/lf0Kndz8N8A/s1600/tcp+3+way+handshake.png