我有以下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();
导致上述异常的代码有什么问题,请帮帮我
提前致谢
答案 0 :(得分:0)
没有您的代码问题
这不是你机器的问题,因为
连接的服务器将发生握手期间远程主机关闭连接
,关闭连接。
更多关于TCP handshake
:http://www.inetdaemon.com/tutorials/internet/tcp/3-way_handshake.shtml
当您作为客户端仅直接发送 ACK 而没有首先 SYN cing服务器时,必须发送重置标志。