【发布时间】:2010-11-25 13:53:43
【问题描述】:
String urlString = "http://www.nbc.com/Heroes/novels/downloads/Heroes_novel_001.pdf";
URL url = new URL(urlString);
if(/* Url does not return 404 */) {
System.out.println("exists");
} else {
System.out.println("does not exists");
}
urlString = "http://www.nbc.com/Heroes/novels/downloads/Heroes_novel_190.pdf";
url = new URL(urlString);
if(/* Url does not return 404 */) {
System.out.println("exists");
} else {
System.out.println("does not exists");
}
这应该打印出来
exists
does not exists
测试
public static String URL = "http://www.nbc.com/Heroes/novels/downloads/";
public static int getResponseCode(String urlString) throws MalformedURLException, IOException {
URL u = new URL(urlString);
HttpURLConnection huc = (HttpURLConnection) u.openConnection();
huc.setRequestMethod("GET");
huc.connect();
return huc.getResponseCode();
}
System.out.println(getResponseCode(URL + "Heroes_novel_001.pdf"));
System.out.println(getResponseCode(URL + "Heroes_novel_190.pdf"));
System.out.println(getResponseCode("http://www.example.com"));
System.out.println(getResponseCode("http://www.example.com/junk"));
输出
200
200
200
404
解决方案
在 .connect() 之前添加下一行,输出将为 200、404、200、404
huc.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)");
【问题讨论】:
-
我在您的测试中没有发现问题。在我的浏览器中,我没有得到第二个结果的内容,但没有得到 404
-
事实上,我似乎得到了一个大部分空白的 HTML 页面
-
该网站似乎提供了几乎所有内容的有效内容。例如www.nbc.com/junk。试试example.com/junk.html
-
URL nbc.com/Heroes/novels/downloads/Heroes_novel_190.pdf 给了我一个完全空白的页面(甚至没有 标签),但带有 404 标头。对用户不是很好,但在技术上是正确的。
-
你应该把解决方案分成一个答案,这样我也可以投票!
标签: java url http-status-code-404