java:下载文件有时会发生IOException:无效http响应
以下代码是我的程序中的函数之一:java:下载文件有时会发生IOException:无效http响应,java,http,url,download,Java,Http,Url,Download,以下代码是我的程序中的函数之一: public void download(String url) throws IOException{ URL website = new URL(url); ReadableByteChannel rbc = Channels.newChannel(website.openStream()); FileOutputStream fos = new FileOutputStream("test.csv"); fos.getCha
public void download(String url) throws IOException{
URL website = new URL(url);
ReadableByteChannel rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream("test.csv");
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
}
问题:
有时它可以工作并下载文件
但有时它只是下载文件,里面什么也没有
有时也会出现例外
Exception in thread "main" java.io.IOException: Invalid Http response
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1555)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441)
at java.net.URL.openStream(URL.java:1038)
at linkproject.Link.download(Link.java:65)
at linkproject.Link.continualDownload(Link.java:158)
at linkproject.Link.main(Link.java:183)
“链接项目”只是我的主要项目
PS:在我的程序中,我会每5秒更改一次URL。之后,我将调用下载函数。所以有时候这会是个例外,我对此很困惑。
我的URL如下:
每次我更改sday、smonth、syear等的值时
我想弄清楚为什么会出现异常,以及如何修复它。我想我想到了一个解决方案。 根据你们发表的所有评论,我只需捕获IOException并再次运行代码,直到没有异常为止。 此外,一旦发生IOException,我将睡眠1或2秒以避免多次并发连接 对于“内部无内容”的问题,我检查内容是否为空。然后我会再次下载它,里面有一些有用的东西
结果证明它很好用。顺便说一句,谢谢大家的评论 这可能是因为服务器没有正确响应。。。。或者是网络问题。@Thilo否。网络问题会以不同的方式表现出来。@EJP:“有时它只是下载文件,里面什么也没有”。我认为这可能是由于网络问题。(不过,这并不是一个特殊的例外,这“有时也会发生”)我明白了。根据你们的评论。我想每次下载文件时,我都会检查代码中的网络。例如,我将检查文件是否为空,并捕获异常。