当前位置: 首页 > 知识库问答 >
问题:

使用Apache Commons在Java下载文件时获取HTTP 302

赫连法
2023-03-14

我正在使用以下方法从Internet下载文件:

try {
    URL url = new URL("http://search.maven.org/remotecontent?filepath=com/cedarsoftware/json-io/4.0.0/json-io-4.0.0.jar");
    FileUtils.copyURLToFile(url, new File(jsonerFolder.getParent() + "\\mods\\json-io-4.0.0.jar"));
} catch (Exception e1) {
    logger.error("Downloading json-io failed with an exception");
    e1.printStackTrace();
}

但下载的文件不是jar,而是具有以下内容的超文本标记语言文件:

<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx/0.8.55</center>
</body>
</html>

它在浏览器中访问时直接下载(在我的例子中是Google Chrome),但在使用FileUtils时无法正确下载。

如何使用FileUtils正确下载文件?

共有2个答案

葛浩阔
2023-03-14

您可以使用ApacheHttpClient代替FileUtils。Httpclient可以支持重定向

像这样的

var httpclient = new DefaultHttpClient();

var httpget = new HttpGet('http://myserver/mypath');
var response = httpclient.execute(httpget);
var entity = response.getEntity();
if (entity != null) {
    var fos = new java.io.FileOutputStream('c:\\temp\\myfile.ext');
    entity.writeTo(fos);
    fos.close();
}
孙熠彤
2023-03-14

代码302指的是重定位。正确的url将在位置标头中传输。然后您的浏览器在那里获取文件表单。请参阅https://en.wikipedia.org/wiki/HTTP_302

试试https://repo1.maven.org/maven2/com/cedarsoftware/json-io/4.0.0/json-io-4.0.0.jar

有关FileUtils,请参阅如何正确使用FileUtils IO?

 类似资料:
  • 问题内容: 我编写了一些代码来下载我所做的网络广播的一集。它获取剧集的URL,并获取保存它的位置。但是,它最多只能下载16MB,然后自动取消。我不完全确定要增加此值需要更改什么值。是否可以,有人可以指出正确的方向吗?谢谢! 下载代码: 问题答案: 快速查看transferFrom的文档: 好。 计数的值1 << 24(来自原始问题)等于16M 我想这就是您的问题的答案:-)

  • 问题内容: 我编写了一些代码,这些代码将搜索目录并在列表框中显示文件。 我什至尝试过: 我虽然出错了… 好的,它说的Users\Hunter很好,当人们获得我的软件时,名字就没有猎人了。那么,我该如何将其命名为任何用户的下载文件夹? 问题答案: WinAPI方法SHGetKnownFolderPath是检索特殊文件夹(包括个人文件夹和下载文件夹)路径的唯一正确方法。 还有其他方法可以获得相似的结果

  • cmf_get_file_download_url($file, $expires = 3600) 功能 获取文件下载链接 参数 $file: string 文件路径,数据库里保存的相对路径 $expires: int 过期时间,单位 s 返回 string 文件链接

  • X2.2.0新增 sp_get_file_download_url($file,$expires=3600) 功能: 获取文件下载链接 参数: $file: 数据库保存的文件路径 $expires:文件过期时间(七牛) 返回: 类型string,文件下载链接 使用: $url = sp_get_file_download_url('portal/23232.png');

  • cmf_get_file_download_url($file, $expires = 3600) 功能 获取文件下载链接 参数 $file: string 文件路径,数据库里保存的相对路径 $expires: int 过期时间,单位 s 返回 string 文件链接

  • 使用Angular 7,我通过发布url文件来调用api,并尝试使用文件保护程序中的“saveAs”函数下载它。文件正在下载,但由于已损坏而无法打开。 我的电话如下: 我试过什么: 切换类型 MIME 应用程序/vnd.openxml格式-office文档.电子表格.工作表 按应用程序/八位字节流 切换响应类型数组缓冲区由 blob 或 blob 作为 json 下面是来自服务的响应标头: 文件存