从Html敏捷包HtmlWeb获取HttpWebResponse

本文关键字:HtmlWeb 获取 HttpWebResponse Html | 更新日期: 2023-09-27 18:20:12

能否从Html敏捷包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();

从Html敏捷包HtmlWeb获取HttpWebResponse

您可以使用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;