【发布时间】:2017-11-28 13:47:31
【问题描述】:
您好 - 我正在尝试使用 Apache commons fileUtils 下载文件,但它总是会收到 400 错误。该文件的 URL 是有效的,因为我使用浏览器成功下载了很多次。有什么想法吗?
java.io.IOException:服务器返回 HTTP 响应代码:400 用于 URL: http://www.nikaia-hosp.gr/img/ΤΕΛΙΚΕΣ ΠΡΟΔΙΑΓΡΑΦΕΣ ΓΙΑ ΥΠΕΡΗΧΟ ΓΥΝΑΙΚΟΛΟΓΙΚΟ ΜΑΙΕΥΤΙΚΟ ΠΡΟΓΕΝΝΗΤΙΚΟΥ ΕΛΕΓΧΟΥ.pdf at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1894) 在 sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1492) 在 java.net.URL.openStream(URL.java:1045) 在 org.apache.commons.io.FileUtils.copyURLToFile(FileUtils.java:1478) 在 com.nikaia.main.NikaiaReader.Downloader.download(Downloader.java:17) 在 com.nikaia.main.NikaiaReader.Downloader.main(Downloader.java:32)
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.commons.io.FileUtils;
public class Downloader {
public static void download(String url,String filename){
//System.out.println("filename is : "+filename);
try {
// FileUtils.copyURLToFile(new URL(url), new File("C:/downloads/"+filename));
FileUtils.copyURLToFile(new URL(url), new File(PropertyReader.readProperty("ExtractedFilesPath")+"/"+filename));
try {
Thread.sleep(Integer.parseInt(PropertyReader.readProperty("downloadTimeout"))*1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String ar[]){
download("http://www.nikaia-hosp.gr/img/ΤΕΛΙΚΕΣ ΠΡΟΔΙΑΓΡΑΦΕΣ ΓΙΑ ΥΠΕΡΗΧΟ ΓΥΝΑΙΚΟΛΟΓΙΚΟ ΜΑΙΕΥΤΙΚΟ ΠΡΟΓΕΝΝΗΤΙΚΟΥ ΕΛΕΓΧΟΥ.pdf","stupid.pdf");
}
}
【问题讨论】:
-
我试过了,现在我得到 java.net.MalformedURLException : no protocol .. http%3A%2F%2Fwww.nikaia-hosp.gr%2Fimg%2F%C .... 一个非常日志字符串
-
下载(“nikaia-hosp.gr/img/"+URLEncoder.encode("ΤΕΛΙΚΕΣπροδιαγρπερηχυνυνυνιυεοχιΚομρΕυυννΚοπΕλλχχυ.pdf”),“stup.pdf”); span>
-
仍然没有协议...
-
我认为错误的请求错误是由于您的网址中的空格造成的。浏览器能够处理这个。在代码中我们需要处理这个