2016-08-02 131 views
0

通过GetStreamAsync抓取图像,我如何确定状态?检查GetStreamAsync状态

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

有时这会给出错误(通常为403或404),我只是想跳过处理这些结果。

所有我能找到的表示使用StatusCode财产或IsSuccessStatusCode,但这些似乎对HttpResponseMessage唯一的工作,这是从GetAsync,不给我Stream我需要处理的图像。

+0

如果您不打算实际使用您应该使用的异步代码[WebClient](https://msdn.microsoft.com/en-us /library/system.net.webclient(v=vs.110).aspx)并使用它的非异步方法。 –

回答

2

该流没有响应状态码。您需要首先获取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(); 
} 
+0

'System.Threading.Tasks.Task '没有包含'Content'的定义,也没有包含接受'System.Threading.Tasks.Task'类型的第一个参数的扩展方法'Content' System.Net.Http.HttpResponseMessage>'可以找到 –

+1

你没有等待任务。检查我上面的代码:var response = ** await ** OpenClient.GetAsync(“imageUrl.jpg”); – Pharylon