2012-06-20 85 views
0

我正在使用浏览器中的任务自动执行程序,例如输入文本,点击等,现在在Visual Studio 2010中使用网络浏览器工具时,所有工作都正常。从网络浏览器到网络请求

我想知道的是我应该如何转换所有这些,以便我可以使用发送请求而不是浏览器?如果你要使用多线程,我听说它效率更高,效果更好,但是我有很多已经可以工作的代码,并且不知道我应该如何实现这一点,而不是扼杀它。

回答

1

您将使用HttpWebRequest/HttpWebResponse来制作HTTP请求到服务器,然后使用HttpWebResponse.GetResponseStream()检索文档正文。然后使用HTML框架(如HtmlAgilityPack)解析HTML并获取文档的DOM图形,然后可以遍历DOM以提取数据并创建请求主体,以便将任何后续请求发送回服务器。

如果响应文档是有效的XML(例如XHTML1.1),那么您可以通过将其加载到System.Xml.XmlDocument中来节省一些时间,但实际上HTML文档经常包含错误和框架,比如HtmlAgilityPack更容易理解分析器错误比System.Xml。

就多线程而言,您可以在每个HttpWebRequests(每个请求与其自己的线程相关联,或使用Async方法)下引发多个HttpWebRequests。请注意,您需要调整一些设置以覆盖.NET网络库中的“每个主机的两个并发HTTP请求”策略。