在Java中检测mime类型,结果错误

时间:2015-06-30 18:09:39

标签: java php mime-types

我是Java的新手,也许我错过了什么,但我试图获取网址http://www.bunspace.com/static/photobucket/15155/dancing_buns.jpg的内容类型。

我试过两种方式:

1:

URL url = new URL(path);
URLConnection urlConnection = url.openConnection();
return urlConnection.getContentType();

2:

URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection)  url.openConnection();
connection.setRequestMethod("HEAD");
connection.connect();
return connection.getContentType();

两种方式都给了我“text / html; charset = ISO-8859-1”

的结果

显然网址的类型是image / jpeg,我也用PHP检查过:

$type = get_headers("http://www.bunspace.com/static/photobucket/15155/dancing_buns.jpg", 1);
print($type['Content-Type']);

PHP返回“image / jpeg”。

有没有办法以更可靠的方式在Java中获取mime类型?

1 个答案:

答案 0 :(得分:3)

该网站似乎拒绝了默认的Java用户代理,即#Java; Java / 1.7" (或您使用的任何版本)。有些网站会这样做,以避免琐碎的机器人。

所以你需要设置用户代理字符串 - 所以要扩展你的第二个方法:

URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection)  url.openConnection();
connection.setRequestProperty("User-Agent", "Not a Java Bot");
connection.setRequestMethod("HEAD");
connection.connect();
return connection.getContentType();

这将从上述网址返回image/jpeg

当然,如果您不希望您的访问被注意,您可以使用真实浏览器的用户代理字符串。