首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java -如何找到url的重定向url?

Java -如何找到url的重定向url?
EN

Stack Overflow用户
提问于 2010-04-17 23:56:27
回答 4查看 108.1K关注 0票数 66

我正在通过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报头字段的值构造重定向的url。在上面的例子中,重定向的url是copenhagen.craigslist.org

有没有什么标准的方法可以让我确定特定的url将重定向到哪个url。

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

EN

回答 4

Stack Overflow用户

发布于 2011-03-11 15:28:34

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

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 );
票数 96
EN

Stack Overflow用户

发布于 2010-04-18 00:03:46

看看HttpURLConnectionAPI documentation,特别是setInstanceFollowRedirects()

票数 1
EN

Stack Overflow用户

发布于 2010-04-18 00:23:21

实际上,我建议使用可靠的开源库作为http客户端。如果你看看ASF的http client,你会发现生活变得容易多了。它是一个易于使用的、可伸缩的、健壮的http客户端。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2659000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档