C# 检查GetStreamAsync状态

C# 检查GetStreamAsync状态,c#,stream,http-status-codes,getasync,C#,Stream,Http Status Codes,Getasync,通过GetStreamAsync获取图像,如何确定状态 HttpClient OpenClient = new HttpClient(); Stream firstImageStream = OpenClient.GetStreamAsync("imageUrl.jpg").Result; 有时这通常会给出错误403或404,我只是想跳过处理这些结果 我所能找到的就是使用StatusCode属性或IsSuccessStatusCode,但这些似乎只适用于HttpResponseMessage,

通过GetStreamAsync获取图像,如何确定状态

HttpClient OpenClient = new HttpClient();
Stream firstImageStream = OpenClient.GetStreamAsync("imageUrl.jpg").Result;
有时这通常会给出错误403或404,我只是想跳过处理这些结果


我所能找到的就是使用StatusCode属性或IsSuccessStatusCode,但这些似乎只适用于HttpResponseMessage,它来自GetAsync,它没有提供处理映像所需的流

流没有响应状态代码。您需要首先获取HttpResponseMessage,检查状态代码,然后读取流

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

流没有响应状态代码。您需要首先获取HttpResponseMessage,检查状态代码,然后读取流

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

所有HttpClient函数都是异步的,这是有原因的,如果您不打算使用您应该使用的实际异步代码和它的非异步方法。所有HttpClient函数都是异步的,如果您不打算使用实际异步代码,则应该使用非异步方法。“System.Threading.Tasks.Task”不包含“Content”的定义,并且没有扩展方法“Content”接受类型为“System.Threading.Tasks.Task”的第一个参数。您没有等待任务。检查上面的代码:var response=await OpenClient.GetAsyncimageUrl.jpg;HttpResponseMessage和HttpContent是一次性类,为什么不使用。。。结构?为什么不使用IsSuccessStatusCode?对我来说,解决方案正在运行!Microsoft应该更改API的这种不一致性。“System.Threading.Tasks.Task”不包含“Content”的定义,并且没有接受“System.Threading.Tasks.Task”类型的第一个参数的扩展方法“Content”。检查上面的代码:var response=await OpenClient.GetAsyncimageUrl.jpg;HttpResponseMessage和HttpContent是一次性类,为什么不使用。。。结构?为什么不使用IsSuccessStatusCode?对我来说,解决方案正在运行!API的这种不一致性是微软应该改变的。