Java-如何找到URL的重定向URL?
我正在通过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 。在上述情况下,重定向的网址为copenhagen.craigslist.org
有什么标准方法可以确定特定的URL将要重定向到哪个URL。
我知道,当一个URL重定向到其他URL时,服务器会发送一个中间响应,该响应包含一个Location标头字段,该字段告诉重定向的URL,但我没有通过该url.openConnection()
;方法收到该中间响应。
回答:
你需要转换URLConnection
到HttpURLConnection
并指示它不是通过设置跟随重定向HttpURLConnection#setInstanceFollowRedirects()
到false
。你还可以通过进行全局设置HttpURLConnection#setFollowRedirects()
。
然后,你只需要自己处理重定向。通过检查响应代码,通过HttpURLConnection#getResponseCode()
抓取Location标头URLConnection#getHeaderField()
,然后在其上激发一个新的HTTP请求。
以上是 Java-如何找到URL的重定向URL? 的全部内容, 来源链接: utcz.com/qa/430866.html