Get HttpWebResponse from Html Agility Pack HtmlWeb

醉酒当歌 提交于 2019-12-11 12:06:56

问题


Can HttpWebResponse be obtained from Html Agility Pack HtmlWeb?

As in, if I call:

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

Is there a convenient method to retrieve the HttpWebResponse from the web instance to view headers - such as to retrieve header properties like content type?

There are pre and post delegates, which will work:

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/");

Instead, is there a way to get the response something like: (HttpWebResponse)web.GetResponse();


回答1:


You can use 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;


来源:https://stackoverflow.com/questions/25596186/get-httpwebresponse-from-html-agility-pack-htmlweb

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!