如何使用C#检索webform上已有的数据

时间:2012-06-01 21:26:40

标签: c# webforms webrequest

我正在开发一个访问路由器页面并检索数据的程序(特别是wifi安全代码)它不是一个黑客工具,因为只有当你的计算机已经成功连接它时它才有效。问题是,当我想读取已经在页面上的数据时(在类似的文本框中)我必须使用正则表达式,因为路由器总是返回html源而不是说xml数据表(即使我将ContentType设置为文本/ XML)。

有没有办法类似于我的代码将数据写入从webforms读取数据的webforms。这是我的代码示例,它写入“password”字段并将其提交给路由器。

string formParams = string.Format("password={0}", loginInput);
WebRequest loginPage = WebRequest.Create(url);
loginPage.ContentType = "application/x-www-form-urlencoded";
loginPage.Method = "POST";
byte[] bytes = Encoding.ASCII.GetBytes(formParams);
loginPage.ContentLength = bytes.Length;
using (Stream os = loginPage.GetRequestStream())
{
   os.Write(bytes, 0, bytes.Length);
}

下面是网页中html代码的摘录,其中该代码会写入loginInput中的数据。

   <td class="form_label">Password&nbsp;:</td>
<td class="form_data">
<input type="password" id="password" name="password" value="" tabindex="100" />
</td>

1 个答案:

答案 0 :(得分:1)

使用HTML Agility Pack

例如,以下是修复HTML文件中所有href的方法:

HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
{
    HtmlAttribute att = link["href"];
    att.Value = FixLink(att);
}
doc.Save("file.htm"); 

它使用XPATH选择html部分,但也可以使用LINQ。有很多samples如何使用它