從Html Agility Pack HtmlWeb獲取HttpWebResponse

c# html-agility-pack httpwebresponse

可以從Html Agility Pack HtmlWeb獲取HttpWebResponse嗎?

如同,如果我打電話:

HtmlWeb web = new HtmlWeb ();
HtmlDocument document = web.Load ("http://stackoverflow.com/");

有沒有一種方便的方法從web實例檢索HttpWebResponse來查看標題 - 比如檢索內容類型等標題屬性?

有前後代表,它們將起作用:

HtmlWeb web = new HtmlWeb ();

web.PreRequest = delegate (HttpWebRequest request) {
    request.Timeout = 10 * 1000;
    return true;
};
web.PostResponse = delegate (HttpWebRequest request, HttpWebResponse response) {
    //response.Headers;
    //response.ContentType;
};

HtmlDocument document = web.Load ("http://stackoverflow.com/");

相反,有沒有辦法得到如下響應: (HttpWebResponse)web.GetResponse();

一般承認的答案

您可以使用TaskCompletionSource + async / await

var web = new HtmlAgilityPack.HtmlWeb();
var tcs = new TaskCompletionSource<HttpWebResponse>();

web.PostResponse = delegate(HttpWebRequest request, HttpWebResponse response)
{
    tcs.SetResult(response);
};

var  document = web.Load("http://stackoverflow.com/");
var httpWebResponse = await tcs.Task;


Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因