Подтвердить что ты не робот

Как определить статус ответа 404 при использовании HttpClient.GetAsync()

Я пытаюсь определить response, возвращаемый методом HttpClient GetAsync в случае 404 ошибок с использованием С# и .NET 4.5.

В настоящее время я могу только сказать, что произошла ошибка, а не состояние ошибки, такое как 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()  );                
        }
    }

Моя проблема в том, что я не могу обработать исключение и определить его статус и другие детали того, что пошло не так.

Как правильно обработать исключение и интерпретировать ошибки?

4b9b3361

Ответ 1

Вы можете просто проверить свойство StatusCode ответа:

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
            );
        }
    }
}