如何在C#中获取重定向的地址

时间:2017-07-07 21:58:57

标签: c#

我可以使用

从网站下载页面
sString = new System.Net.WebClient().DownloadString(Page);

但是如果页面重定向,我该如何捕获新地址。例如,如果我访问google.com网站,我想获取它重定向到的页面,以便我可以获取ei代码。

2 个答案:

答案 0 :(得分:1)

您需要检查HTTP响应中包含的HTTP状态,如果它是HTTP" 302 Found",那么您需要获取"位置"的值。来自回复的标题。该值将是重定向的目标,因此您需要下载目标。

two
five

答案 1 :(得分:0)

以下是如何使用HttpClient

完成的
        string Page = "https://stackoverflow.com/questions/44980231/";
        HttpClientHandler ClientHandler = new HttpClientHandler();
        ClientHandler.AllowAutoRedirect = false;
        HttpClient client = new HttpClient(ClientHandler);
        HttpResponseMessage response = await client.GetAsync(Page);
        try
        {
            string location = response.Headers.GetValues("Location").FirstOrDefault();
            if (!Uri.IsWellFormedUriString(location, UriKind.Absolute))
            {
                Uri PageUri = new Uri(Page);
                location = PageUri.Scheme + "://" + PageUri.Host + location;
            }
            MessageBox.Show(location);
        }
        catch
        {
            MessageBox.Show("No redirect!");
        }

<强>结果:

Result