Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.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# 如何在C中从WebRequest类的响应中获取明文#_C#_Html_Httpwebrequest_Webrequest_Plaintext - Fatal编程技术网

C# 如何在C中从WebRequest类的响应中获取明文#

C# 如何在C中从WebRequest类的响应中获取明文#,c#,html,httpwebrequest,webrequest,plaintext,C#,Html,Httpwebrequest,Webrequest,Plaintext,我想使用WebRequest类获取纯文本,就像使用webbrowser1.Document.Body.InnerText时一样。我尝试了以下代码 public string request_Resource() { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myurl); Stream stream = request.GetResponse().GetResponseStream(); StreamR

我想使用WebRequest类获取纯文本,就像使用
webbrowser1.Document.Body.InnerText时一样。我尝试了以下代码

public string request_Resource()
{
   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myurl);
   Stream stream = request.GetResponse().GetResponseStream();
   StreamReader sr = new StreamReader(stream);
   WebBrowser wb = new WebBrowser();
   wb.DocumentText = sr.ReadToEnd();
   return wb.Document.Body.InnerText;
}
当我执行时,这是一个
NullReferenceException

有没有更好的方法来获取纯文本

注意:我不能直接使用webbrowser控件加载网页,因为我不想处理在加载网页时多次触发的所有事件

更新:根据建议,我已将代码更改为使用WebClient类而不是WebRequest 我的代码现在看起来像这样

public string request_Resource()
{
   WebClient wc = new WebClient();
   wc.Proxy = null;
   //The user agent header is added to avoid any possible errors
   wc.Headers.Add("user-agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 ( .NET CLR 3.5.30729; .NET4.0C)");
   return wc.DownloadString(myurl);
}
我正在考虑使用HTML实用程序包,有人能推荐更好的替代方案吗。您正在寻找的,它可以在不使用IE的情况下解析HTML。
它有一个
InnerText
属性


要回答您的问题,您需要等待浏览器解析文本


顺便说一下,您应该使用
WebClient
类,而不是
WebRequest

使用WebClient:

public string request_Resource()
{
    WebClient wc = new WebClient();
    byte[] data = wc.DownloadData(myuri);
    return Encoding.UTF8.GetString(data);
}

这将为您提供网站的内容。然后可以使用HtmlAgilityPack解析结果

如果您只需要纯HTML文本,那么您已经编写了该代码

public string request_Resource()
{
   HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myurl);
   Stream stream = request.GetResponse().GetResponseStream();
   StreamReader sr = new StreamReader(stream);
   return sr.ReadToEnd();
}

感谢您提供的HTML敏捷包,我将检查@SLaks的建议,我已经检查了HTML实用程序包,任何人都可以建议一个不使用第三方库的简单解决方案。谢谢你检查这个答案使用HTML敏捷包-谢谢大家的HTML实用程序包的建议,我一定会考虑它,但在这样做之前,任何人可以建议任何其他方式来做到这一点。来到Webclient类,我已经更改了代码。我清楚地提到我需要纯文本,我从来没有提到纯html。无论如何,谢谢你