在 Java 中确定重定向的 URL
使用 URLConnection 访问网页时,经常会遇到重定向。当 URL 指向另一个目的地时,就会发生这种情况。要确定重定向的 URL,我们需要了解 HTTP 重定向的工作原理。
通常,服务器会响应 3xx 状态代码(例如 301、302),表示重定向。响应包括指定新目的地的“Location”头字段。但是,URLConnection 不会自动遵循重定向。
访问重定向的 URL
要获取重定向的 URL,我们可以在初始化后手动调用 URLConnection 上的 getInputStream()联系。此操作强制建立连接,服务器发送最终响应,包括“Location”标头。
URLConnection con = new URL(url).openConnection(); con.connect(); System.out.println("Original URL: " + con.getURL()); InputStream is = con.getInputStream(); System.out.println("Redirected URL: " + con.getURL()); is.close();
访问 Location 标头
在某些情况下,我们可能想在获取重定向的内容之前访问“Location”标头。为此,我们可以使用 HttpURLConnection 并设置 setInstanceFollowRedirects(false):
HttpURLConnection con = (HttpURLConnection) (new URL(url).openConnection()); con.setInstanceFollowRedirects(false); con.connect(); System.out.println("Response code: " + con.getResponseCode()); String location = con.getHeaderField("Location"); System.out.println("Location header: " + location);
以上是Java中如何确定重定向的URL?的详细内容。更多信息请关注PHP中文网其他相关文章!