【发布时间】:2014-03-12 10:52:33
【问题描述】:
我编写了简单的代码来获取给定 URL 的content-type。为了让处理更快,我做了一个更改,将请求方法设置为HEAD
// Added a random puppy face picture here
// On entering this query in browser (or Poster<mozilla> or Postman<chrome>), the
// content type is shown as image/jpeg
URL url = new URL("http://www.bubblews.com/assets/images/news/521013543_1385596410.jpg");
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
connection.setRequestMethod("HEAD");
connection.connect();
String contentType = connection.getContentType();
System.out.println(contentType);
if (!contentType.contains("text/html")) {
System.out.println("NOT TEXT/HTML");
// Do something
}
如果不是text/html,我正在尝试实现某些目标,但是当我将请求方法设置为HEAD 时,内容类型显示为text/html。如果我使用Poster 或Postman 触发相同的HEAD 请求,我会将content-type 视为image/jpeg。
那么,是什么让这个 Java 代码的内容类型发生了变化?有人可以指出我可能犯的任何错误吗?
注意:我使用this 帖子作为参考
【问题讨论】:
-
我想你得到一个 HTML 页面,上面写着“方法不允许”或其他一些错误。您可能应该添加一个“Accept”标头和“User-Agent”标头。
-
@hgoebl 好吧,在这种情况下,当使用
poster/postman进行测试时,它不应该有not给定image/jpeg吗? -
我不确定 Postman 向您的请求添加了多少您未明确设置的标头。我想“用户代理”和“接受”可能是其中之一。你能嗅出流量吗(Fiddler、Wireshark)?
-
@hgoebl 非常感谢,在请求标头中添加 User-Agent 属性解决了这个问题。您能否将其添加为答案,以便我接受!。
标签: java url httprequest content-type httpurlconnection