.net C# HTTP编程

anauzrmj  于 2023-01-03  发布在  .NET
关注(0)|答案(4)|浏览(107)

我想建立一个软件,将处理一些html格式,该软件将是一种机器人,将处理我的网站上的一些形式自动。
有没有人可以给予我一些基本的步骤如何做这项工作...任何教程,样本,书籍或任何可以帮助我。
你们中的一些人可以用POST方法发布一个工作代码吗?

ix0qys7i

ix0qys7i1#

看看How to: Send Data Using the WebRequest Class,它给出了一个如何使用HttpWebRequest class创建一个页面并发布到另一个页面的示例。

oknwwptz

oknwwptz2#

要填写表格...
1.查找要填充的所有INPUT或TEXTAREA元素。
1.构建要发送回服务器的数据字符串。该字符串的格式类似于“name1=value1&name2=value2”(就像在查询字符串中一样)。每个值都需要进行URL编码。
1.如果表单的“method”属性是“GET”,那么在“action”属性中获取URL,添加一个“?”和数据字符串,然后向URL发出一个“GET”Web请求。
1.如果表单的“方法”是“POST”,那么数据将在Web请求的不同区域提交。请查看this page中的C#代码。

ukdjmx9f

ukdjmx9f3#

为了扩展大卫和JP的回答:
假设您正在处理内容不熟悉的表单,您可能可以......
1.通过HttpWebRequest获取包含表单的页面。
1.将其加载到XmlDocument中
1.使用XPath遍历/选择表单元素。
1.基于元素构建查询字符串/发布数据。
1.使用HttpWebRequest发送数据
如果表单的结构是事先知道的,那么您实际上可以从#4开始。
(未经测试)示例(我的XPath不是很好,所以语法肯定不太正确):

HttpWebRequest request;
HttpWebResponse response;
XmlDocument xml = new XmlDocument();
string form_url = "http://...."; // you supply this
string form_submit_url;
XmlNodeList element_nodes;
XmlElement form_element;
StringBuilder query_string = new StringBuilder();

// #1
request = (HttpWebRequest)WebRequest.Create(form_url));
response = (HttpWebResponse)request.GetResponse();

// #2
xml.Load(response.GetResponseStream());

// #3a
form_element = xml.selectSingleNode("form[@name='formname']");
form_submit_url = form_element.GetAttribute("action");

// #3b
element_nodes = form_element.SelectNodes("input,select,textarea", nsmgr)

// #4
foreach (XmlNode input_element in element_nodes) {
  if (query_string.length > 0) { query_string.Append("&"); }
  // MyFormElementValue() is a function/value you need to provide/define.
  query_string.Append(input_element.GetAttribute("name") + "=" + MyFormElementValue(input_element.GetAttribute("name"));
}

// #5
// This is a GET request, you can figure out POST as needed, and deduce the submission type via the <form> element's attribute.
request = (HttpWebRequest)WebRequest.Create(form_submit_url + "?" + query_string.ToString()));

参考文献:

t1qtbnec

t1qtbnec4#

如果你不想走HttpWebRequest的路线,我建议使用WatiN。它可以很容易地自动化IE或Firefox,而不必担心HTTP请求的内部问题。

相关问题