使用HttpClient C#.NET获取URL

Sam*_*m B 3 .net c# asynchronous header httpclient

我正在尝试使用HttpClient获取页面的URL。我以前只使用HttpWebRequest,但是我需要使它成为异步方法。在下面的代码中,myUri始终返回null,当我稍后尝试处理它时,将引发异常。

位置标头使用的是错误的东西吗?

        string myUrl = "http://www.example.com/"; 
        Uri myUri= new Uri(myUrl);
        using (HttpClient client = new HttpClient())
        using (HttpResponseMessage response = await client.GetAsync(myUri))
        {
            if (response.IsSuccessStatusCode)
            {
                myUri= response.Headers.Location;
                Debug.WriteLine("True "+ myUri);
            } 
            else {
                Debug.WriteLine("False " + myUri);
            }
        }
Run Code Online (Sandbox Code Playgroud)

Rob*_*Rob 5

这是因为HttpClient它将自动跟随重定向。如果您需要页面重定向到的URL,则需要阻止它自动跟随:

将您的代码更改为以下内容:

string myUrl = "http://www.example.com/"; 
Uri myUri= new Uri(myUrl);

HttpClientHandler httpClientHandler = new HttpClientHandler();
httpClientHandler.AllowAutoRedirect = false;

using (HttpClient client = new HttpClient(httpClientHandler))
Run Code Online (Sandbox Code Playgroud)