3

i am using .net 5 latest prview..Below is the code for http client in mvc

var response = await _httpClient.SendAsync(request);
         try
        { 
            response.EnsureSuccessStatusCode();
            data = await response.Content.ReadFromJsonAsync<Abc>();
            return data;
        }
        catch (HttpRequestException ex) when (ex.StatusCode = 404)  ----how to check 404 error?
        {
            throw;
        }
        catch (HttpRequestException ex) when (ex.StatusCode == 503)
        {
            throw;
        }

How to check 404 error or other details in catch.am getting below error.Thanks in advance...

enter image description here

1
  • No..i removed also it showing another error Commented Aug 29, 2020 at 11:59

2 Answers 2

7

The easiest way would be to use the proper enum for comparison:

var response = await _httpClient.SendAsync(request);
try
{ 
    response.EnsureSuccessStatusCode();
    data = await response.Content.ReadFromJsonAsync<Abc>();
    return data;
}
catch (HttpRequestException ex) when (ex.StatusCode == HttpStatusCode.NotFound)  ----how to check 404 error?
{
    throw;
}
catch (HttpRequestException ex) when (ex.StatusCode == HttpStatusCode.ServiceUnavailable)
{
    throw;
}

Another option would be casting to (int?), but using the enum should provide better readibility.

Sign up to request clarification or add additional context in comments.

Comments

6

HttpRequestException.StatusCode is type of HttpStatusCode. You can't compare directly with int.

You can cast the status code to int like :

try
{ 
    response.EnsureSuccessStatusCode();
    data = await response.Content.ReadFromJsonAsync<Abc>();
    return data;
}
catch (HttpRequestException ex) when (((int)ex.StatusCode) == 404)
{
    throw;
}
catch (HttpRequestException ex) when (((int)ex.StatusCode) == 503)
{
    throw;
}

Or compare with the enumeration's values :

try
{ 
    response.EnsureSuccessStatusCode();
    data = await response.Content.ReadFromJsonAsync<Abc>();
    return data;
}
catch (HttpRequestException ex) when (ex.StatusCode == HttpStatusCode.NotFound)
{
    throw;
}
catch (HttpRequestException ex) when (ex.StatusCode == HttpStatusCode.ServiceUnavailable)
{
    throw;
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.