如何在 Java 中识别重定向的 URL
在 Java 中,URLConnection 类提供了一种与远程 URL 建立连接的便捷方法。然而,在涉及URL重定向的场景中,检索到的URL可能不是最终目的地。确定实际重定向的 URL 是一个挑战。本文讨论解决此问题的解决方案。
通过 URLConnection 访问 URL 时,服务器可能会发送一个中间响应,其中包含指示重定向 URL 的 Location 标头字段。但是,openConnection() 方法不会捕获此中间响应。
利用 getInputStream() 方法
要捕获重定向的 URL,getInputStream() 方法可以被利用。此方法启动连接过程并遵循任何 HTTP 重定向。因此,URLConnection 实例现在保存有关重定向 URL 的信息。
为了说明这一点,以下代码片段演示了如何检索重定向 URL:
URLConnection con = new URL(url).openConnection(); System.out.println("Original URL: " + con.getURL()); con.connect(); System.out.println("Connected URL: " + con.getURL()); InputStream is = con.getInputStream(); System.out.println("Redirected URL: " + con.getURL()); is.close();
检查重定向在内容检索之前
在某些情况下,可能需要确定之前是否发生过重定向获取重定向 URL 处的内容。以下代码片段说明了这种方法:
HttpURLConnection con = (HttpURLConnection)(new URL(url).openConnection()); con.setInstanceFollowRedirects(false); con.connect(); int responseCode = con.getResponseCode(); System.out.println("Response code: " + responseCode); String location = con.getHeaderField("Location"); System.out.println("Redirected to: " + location);
以上是在 Java 中使用 URLConnection 时如何检索重定向的 URL?的详细内容。更多信息请关注PHP中文网其他相关文章!