Java - 如何找到网址的重定向网址?

标签 java url http-headers

我通过java访问网页如下:

URLConnection con = url.openConnection();

但在某些情况下,一个 url 会重定向到另一个 url。所以我想知道上一个url重定向到的url。

以下是我收到的响应头字段:

null-->[HTTP/1.1 200 OK]
Cache-control-->[public,max-age=3600]
last-modified-->[Sat, 17 Apr 2010 13:45:35 GMT]
Transfer-Encoding-->[chunked]
Date-->[Sat, 17 Apr 2010 13:45:35 GMT]
Vary-->[Accept-Encoding]
Expires-->[Sat, 17 Apr 2010 14:45:35 GMT]
Set-Cookie-->[cl_def_hp=copenhagen; domain=.craigslist.org; path=/; expires=Sun, 17     Apr 2011 13:45:35 GMT, cl_def_lang=en; domain=.craigslist.org; path=/; expires=Sun, 17 Apr 2011 13:45:35 GMT]
Connection-->[close]
Content-Type-->[text/html; charset=iso-8859-1;]
Server-->[Apache]

所以目前,我正在从 Set-Cookie header 字段的值构造重定向的 url。在上述情况下,重定向的 url 是 copenhagen.craigslist.org

是否有任何标准方法可以让我确定特定 url 将重定向到哪个 url。

我知道当一个 url 重定向到其他 url 时,服务器会发送一个中间响应,其中包含一个 Location header 字段,该字段告诉重定向的 url,但我没有通过 接收到该中间响应url.openConnection(); 方法。

最佳答案

在调用 getInputStream() 后,只需在 URLConnection 实例上调用 getUrl():

URLConnection con = new URL( url ).openConnection();
System.out.println( "orignal 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();

如果您需要在实际获取内容之前知道重定向是否发生,这里是示例代码:

HttpURLConnection con = (HttpURLConnection)(new URL( url ).openConnection());
con.setInstanceFollowRedirects( false );
con.connect();
int responseCode = con.getResponseCode();
System.out.println( responseCode );
String location = con.getHeaderField( "Location" );
System.out.println( location );

关于Java - 如何找到网址的重定向网址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2659000/

相关文章:

java - 将图像放入.jar中

python - 如何临时将 Django 站点移动到子目录中(用于测试)?

php - 格式化链接以轻松更改网站位置(例如在另一个网站的子目录中)

javascript - 如何在 Node 的 Sails.js 中使用 header 作为 session key 而不是 cookie

android - 如何使用 Google Volley 将响应 header 字段返回到 Android/Java 中的 HTTP GET 请求的主要方法?

java - 阻止 ignite 在调用 setter 时更新缓存

java - 是否可以为现有的 Scanner 对象指定新的源?

Python,需要帮助使用 mechanize 制作 'brute force'

javascript - 在 JavaScript 中,有没有一种方法可以检索 URL 的内容类型而不检索整个文件?

java - Hibernate join 没有外键并且只映射一个表