我的公司不使用Apache,因此我们已经开始使用自己的套接字代码。在下面,HTMLDoc是我的服务器响应版本。我正在尝试获取浏览器重定向到的URL,如果原始URL提供了301响应代码:
static public void main(String args[]) throws Exception
{
String spec = "http://some_url_with_301_redirect.com";
URL my_url = new URL(spec);
HTMLDoc doc = getDocFromURL(my_url);
// Do stuff with the doc.
}
public static HTMLDoc getDocFromURL(URL url)
{
try
{
URLConnection u = url.openConnection();
if ( u instanceof HttpURLConnection )
{
HttpURLConnection http_u = (HttpURLConnection)u;
int response_code = http_u.getResponseCode();
if (response_code == 300 || response_code == 301 || response_code == 302)
{
URL redirected_url = getRedirectedURL(url);
return getDocFromURL(redirected_url);
}
}
return null;
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
问题是,我不知道getRedirectedURL(url)方法应该是什么样子。我能对http_u做一个我不熟悉的快速电话吗?
答案 0 :(得分:1)
HTTP 301 response始终伴有Location
标头。典型的响应看起来像
HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/index.asp
您可以阅读此标题并获取重定向的网址。 Jon Lin在上面的评论中发布的链接中提到了sample code这样做。