java - 以编程方式下载文件

标签 java url inputstream

我正在尝试使用 java 应用程序下载 vcalendar,但无法从特定链接下载。

我的代码是:

URL uri = new URL("http://codebits.eu/s/calendar.ics");
InputStream in = uri.openStream();

int r = in.read();
while(r != -1) {
    System.out.print((char)r);
    r = in.read();
}

当我尝试从另一个链接下载时,它可以工作(例如: http://www.mysportscal.com/Files_iCal_CSV/iCal_AUTO_2011/f1_2011.ics )。有些东西不允许我下载,我不明白为什么,当我尝试使用浏览器时它可以工作。

最佳答案

我会关注这个example 。基本上,获取连接的响应代码。如果是重定向(例如本例中的 301),则检索 header 位置并尝试使用该位置访问文件。

简单的例子:

URL uri = new URL("http://codebits.eu/s/calendar.ics");
HttpURLConnection con = (HttpURLConnection)uri.openConnection();
System.out.println(con.getResponseCode());
System.out.println(con.getHeaderField("Location"));

uri = new URL(con.getHeaderField("Location"));
con = (HttpURLConnection)uri.openConnection();
InputStream in = con.getInputStream();

关于java - 以编程方式下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8335191/

相关文章:

java - 不使用日历和日期实例显示星期几

java - 声明 TextView 列表的更好方法?

.htaccess - nginX 中的 URL 重写

java - 在 Java 中,URL 连接何时关闭?

java - 从本地机器到tomcat部署的webapp的InputStream

java - 读取 ClassLoader.getSystemResourceAsStream 后是否需要显式关闭输入流?

java - 被 CookieHandler 迷惑

java - Java 8 中的可选链接

Windows 文件上的 Java : File. toURI().toURL()

java从SequenceInputStream读取内容问题