java:下载文件有时会发生IOException:无效的http响应

时间:2015-10-26 07:49:48

标签: 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.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这里是: http://www.taifex.com.tw/chinese/3/7_12_8dl.asp?syear=2015&smonth=10&sday=16&eyear=2015&emonth=10&eday=16&COMMODITY_ID=TXF

每次我改变sday,smonth,syear等的值。

我想弄清楚为什么它会发生异常,我该如何解决它。

1 个答案:

答案 0 :(得分:0)

我想我想到了解决这个问题的解决方案。 基于你们发布的所有评论,我只是捕获IOException并再次运行代码,直到没有异常。 此外,一旦碰到IOException,我将睡眠1或2秒,以避免多次并发连接。

对于"内部没有任何问题",我检查内容,如果它是null。然后我会再次下载它内部有用的东西。

原来它工作正常。顺便说一句,谢谢你们所有人'评论。