【发布时间】:2014-08-31 20:49:06
【问题描述】:
HttpWebResponse可以从HTML敏捷包HtmlWeb获得吗?
如果我打电话:
HtmlWeb web = new HtmlWeb ();
HtmlDocument document = web.Load ("http://stackoverflow.com/");
是否有一种方便的方法可以从web 实例中检索HttpWebResponse 以查看标头 - 例如检索内容类型等标头属性?
有 pre 和 post 代表,它们会起作用:
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();
【问题讨论】:
-
为什么不自己提出请求并将从响应中提取的字符串交给 HAP? HtmlDocument.LoadHtml 是你的朋友。
-
谢谢 - 这是最有意义的。我会接受的。
-
嗯...这并不是那么简单,因为检测 HTML 中使用的字符集是一项棘手的工作。我以前做过这个……正在寻找代码。
-
我会选择@LB 的答案,但为了将来参考,在下载字符串内容时,WebClient.DownloadString 和 DownloadStringAsync 会运行一整套技巧来检测来自内容类型标头的编码
charset=...后缀和字节顺序标记。如果您从不同的来源获取数据,会很方便。
标签: c# html-agility-pack httpwebresponse