Search code examples
c#streamhttp-status-codesgetasync

Check GetStreamAsync status


Grabbing an image via GetStreamAsync, how do I determine status?

HttpClient OpenClient = new HttpClient();
Stream firstImageStream = OpenClient.GetStreamAsync("imageUrl.jpg").Result;

Sometimes this will give an error (403 or 404 typically) and I simply want to skip processing those results.

All I can find says to use the StatusCode property or IsSuccessStatusCode, but those seem to only work on HttpResponseMessage, which is from GetAsync, which does not give me the Stream I need to process the image.


Solution

  • The stream doesn't have the response status code. You'll need to get the HttpResponseMessage first, check the status code, and then read in the stream.

    HttpClient OpenClient = new HttpClient();
    var response = await OpenClient.GetAsync("imageUrl.jpg");
    if (response.StatusCode == System.Net.HttpStatusCode.OK)
    {
        Stream stream = await response.Content.ReadAsStreamAsync();
    }