无法使用Java的URLConnection获取响应头位置

有人可以在这里建议我做错了吗?
我正在尝试使用Java获取某个URL的标头位置,这是我的代码:

URLConnection conn = url.openConnection(); String location = conn.getHeaderField("Location"); 

这很奇怪,因为我确实知道我正在引用的URL返回Location头并使用getContentType()或getContentLength()之类的方法完美地工作

你的建议一如既往地受到赞赏:)

谢谢

也许Location头是作为重定向响应的一部分返回的。 如果是这样, URLConnection通过向指向的资源发出第二个请求来自动处理重定向,因此您需要禁用它:

 ((HttpURLConnection) conn).setInstanceFollowRedirects(false); 

编辑:如果您确实需要重定向目标的URL并且不想禁用重定向处理,则可以改为调用getURL() (在建立连接之后)。

只需跟进axtavt的答案……如果url有多个重定向,您可以执行以下操作以获取直接链接:

 String location = "http://www.example.com/download.php?getFile=1"; HttpURLConnection connection = null; for (;;) { URL url = new URL(location); connection = (HttpURLConnection) url.openConnection(); connection.setInstanceFollowRedirects(false); String redirectLocation = connection.getHeaderField("Location"); if (redirectLocation == null) break; location = redirectLocation; }