使用HttpClient.GetAsync()时如何确定404响应状态>

问题描述 投票:29回答:2

[我正在尝试确定使用C#和.NET 4.5出现404错误时,responseHttpClient方法返回的GetAsync

目前,我只能告诉您发生了错误,而不是错误状态,例如404或超时。

当前,我的代码和我的代码看起来像这样:

    static void Main(string[] args)
    {
        dotest("http://error.123");
        Console.ReadLine();
    }

    static async void dotest(string url)
    {
        HttpClient client = new HttpClient();

        HttpResponseMessage response = new HttpResponseMessage();

        try
        {
            response = await client.GetAsync(url);

            if (response.IsSuccessStatusCode)
            {
                Console.WriteLine(response.StatusCode.ToString());
            }
            else
            {
                // problems handling here
                string msg = response.IsSuccessStatusCode.ToString();

                throw new Exception(msg);
            }

        }
        catch (Exception e)
        {
            // .. and understanding the error here
            Console.WriteLine(  e.ToString()  );                
        }
    }

我的问题是我无法处理异常,无法确定异常的状态以及发生错误的其他详细信息。

我将如何正确处理异常并解释发生了什么错误?

我正在尝试确定使用C#和.NET 4.5出现404错误时HttpClient的GetAsync方法返回的响应。目前,我只能说发生了错误,而不是说...

c# exception-handling httpclient .net-4.5 async-await
2个回答
49
投票

您可以简单地检查响应的StatusCode属性:


0
投票

属性static async void dotest(string url) { using (HttpClient client = new HttpClient()) { HttpResponseMessage response = await client.GetAsync(url); if (response.IsSuccessStatusCode) { Console.WriteLine(response.StatusCode.ToString()); } else { // problems handling here Console.WriteLine( "Error occurred, the status code is: {0}", response.StatusCode ); } } } 是一个response.StatusCode枚举。

© www.soinside.com 2019 - 2024. All rights reserved.