Obtenir HttpWebResponse de Html Agility Pack HtmlWeb

c# html-agility-pack httpwebresponse

Question

Peut-on obtenir HttpWebResponse à partir de Html Agility Pack HtmlWeb ?

Comme dans, si j'appelle:

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

Existe-t-il une méthode pratique pour extraire HttpWebResponse de l'instance web afin d'afficher les en-têtes, par exemple pour extraire des propriétés d'en-tête telles que le type de contenu?

Il y a des délégués avant et après, qui fonctionneront:

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

Au lieu de cela, existe-t-il un moyen d'obtenir une réponse du type: (HttpWebResponse)web.GetResponse();

Réponse acceptée

Vous pouvez utiliser TaskCompletionSource + async / TaskCompletionSource

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;


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi