Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Html Agility Pack HtmlWeb获取HttpWebResponse_C#_Html Agility Pack_Httpwebresponse - Fatal编程技术网

C# 从Html Agility Pack HtmlWeb获取HttpWebResponse

C# 从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

能否从Html Agility Pack
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=…
后缀和字节顺序标记的编码。如果你从不同的来源获取信息,这会很方便。