使用 Apache Commons 在 Java 中下载文件时获取 HTTP 302
Getting HTTP 302 when downloading file in Java using Apache Commons
我正在使用以下方法从 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 文件,包含以下内容:
<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 正确下载文件?
代码302指的是搬迁。正确的 url 将在位置 header 中传输。然后,您的浏览器会在那里获取文件形式。参见 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,请参阅 How to use FileUtils IO correctly?
您可以使用 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();
}
我正在使用以下方法从 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 文件,包含以下内容:
<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 正确下载文件?
代码302指的是搬迁。正确的 url 将在位置 header 中传输。然后,您的浏览器会在那里获取文件形式。参见 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,请参阅 How to use FileUtils IO correctly?
您可以使用 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();
}