2016-08-02 130 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