C# 从Html Agility Pack HtmlWeb获取HttpWebResponse
能否从Html Agility PackC# 从Html Agility Pack HtmlWeb获取HttpWebResponse,c#,html-agility-pack,httpwebresponse,C#,Html Agility Pack,Httpwebresponse,能否从Html Agility PackHtmlWeb中获取HttpWebResponse 比如,如果我打电话: HtmlWeb web = new HtmlWeb (); HtmlDocument document = web.Load ("http://stackoverflow.com/"); 是否有一种方便的方法可以从web实例检索HttpWebResponse,以查看标题-例如检索标题属性,如内容类型 有前置和后置代表,它们将起作用: HtmlWeb web = new HtmlWe
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;
var-web=new-HtmlAgilityPack.HtmlWeb();
var tcs=new TaskCompletionSource();
web.PostResponse=委托(HttpWebRequest请求,HttpWebResponse响应)
{
设置结果(响应);
};
var document=web.Load(“http://stackoverflow.com/");
var httpWebResponse=wait tcs.Task;
为什么不自己提出请求并将从响应中提取的字符串交给HAP?HtmlDocument.LoadHtml是您在这里的朋友。谢谢-这很有意义。我会接受的。嗯。。。这不是很简单,因为检测HTML中使用的字符集是一项棘手的工作。我以前做过这个。。。寻找代码。我同意@LB的答案,但为了将来参考,当下载字符串内容时,WebClient.DownloadString和DownloadStringAsync会运行一整套技巧来检测内容类型标题的charset=…
后缀和字节顺序标记的编码。如果你从不同的来源获取信息,这会很方便。