0

我的公司不使用 Apache,所以我们编写了自己的套接字代码。在下文中,HTMLDoc 是我的服务器响应版本。如果原始 URL 给出 301 响应代码,我正在尝试获取浏览器将重定向到的 URL:

    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 电话?

4

1 回答 1

1

HTTP 301 响应总是伴随着一个Location标头。一个典型的反应看起来像

HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/index.asp

您可以阅读此标头并获取重定向的 URL。Jon Lin 在上面的评论中发布的链接中提到了执行此操作的示例代码。

于 2012-06-14T03:04:03.237 回答