从HTML Agility Pack HtmlWeb获取HttpWebResponse [英] Get HttpWebResponse from Html Agility Pack HtmlWeb

查看:69
本文介绍了从HTML Agility Pack HtmlWeb获取HttpWebResponse的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

能否从Html Agility Pack HtmlWeb获得HttpWebResponse?

Can HttpWebResponse be obtained from Html Agility Pack HtmlWeb?

如是,如果我打电话:

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

是否有一种方便的方法从web实例中检索HttpWebResponse以查看标头-例如检索标头属性(如内容类型)?

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

相反,有没有办法获得类似以下内容的响应:(HttpWebResponse)web.GetResponse();

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

推荐答案

您可以使用TaskCompletionSource + async/await

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;

这篇关于从HTML Agility Pack HtmlWeb获取HttpWebResponse的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆