用了FileUtils工具类和HttpURLConnection httpconn = (HttpURLConnection) urlfile.openConnection();下载文件时总会提示Server returned HTTP response code: 403 for URL,我添加了User-Agent也不行
HttpClient client = HttpClients.createDefault();
HttpPost httppost = new HttpPost(url);用这个方法会有文件下载下来但是下下来的文件是损坏的,
为什么在服务器上直接用wget就能下载,是权限问题不能http下载吗
这是HttpClient 的代码
public File downloadFile(String url) {
File file = null;
URL urlfile;
InputStream inputStream = null;
OutputStream outputStream = null;
HttpURLConnection conn = null;
try {
String[] files = url.split("\\?");
String originalFilename = files[0].substring(files[0].lastIndexOf('/') + 1);
urlfile = new URL(url);
HttpURLConnection httpconn = (HttpURLConnection) urlfile.openConnection();
httpconn.setRequestProperty("User-Agent","Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36");
httpconn.setDoInput(true);
httpconn.setRequestMethod("GET");
// 连接指定的资源
httpconn.connect();
inputStream = httpconn.getInputStream();
file = new File(uploadPath + "/" + originalFilename);
try {
URL httpurl = new URL(url);
FileUtils.copyURLToFile(httpurl, file);
} catch (Exception e) {
log.info("++++++下载文件异常{}",e.getMessage());
}
outputStream = new FileOutputStream(file);
IOUtils.copy(inputStream,outputStream);
} catch (Exception e) {
log.info("++++++程序异常{}",e.getMessage());
e.printStackTrace();
} finally {
IOUtils.closeQuietly(inputStream);
IOUtils.closeQuietly(outputStream);
}
return file;
}