我正在使用System.Net.WebClient
以異步模式執行一些HTTP操作。使用異步操作的原因最重要的是,我獲得了進度更改指示的事實 - 僅適用於異步操作,如the docs所述。在異步WebClient請求中獲取HTTP標頭
所以我們可以說我有我的Web客戶端設置:
this.client = new WebClient();
this.client.UploadStringCompleted +=
new UploadStringCompletedEventHandler(textUploadComplete);
和委託:
private void textUploadComplete(Object sender, UploadStringCompletedEventArgs e)
{
if (e.Error != null)
{
// trigger UI failure notification
return;
}
// FIXME not checking for response code == 200 (OK)
// trigger UI success notification
}
所以你看,我假設,如果不發生異常,請求爲總是成功的(可能並非如此,因爲HTTP響應狀態碼可以是!= 2xx)。從關於UploadFileAsync的文檔中,我無法確定是否也處理了非200響應。
我是真的是新的到C#和我似乎無法找到一種方式來訪問該特定異步請求的響應頭。在我看來,每個WebClient
只能在任何給定時間持有響應(或一組標題)。
儘管我不打算同時執行多個並行請求,但我仍然想知道是否有更優雅的方式來檢索特定請求的響應標頭/狀態代碼,而不是必須從WebClient
獲得「最後可用」響應。
謝謝。
你在.NET 4.5中嗎?如果是這樣,請嘗試使用TaskAsync重載...您仍然需要從WebClient類訪問頭文件,但使用TAP工作流程時根本不會發現這種令人反感的內容...我同意這樣做感覺有點不對普通的事件處理程序。 'await client.UploadStringTaskAsync(...); var headers = client.ResponseHeaders;' – TCC 2014-05-02 20:26:57