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()));
4条答案
按热度按时间ix0qys7i1#
看看How to: Send Data Using the WebRequest Class,它给出了一个如何使用HttpWebRequest class创建一个页面并发布到另一个页面的示例。
oknwwptz2#
要填写表格...
1.查找要填充的所有INPUT或TEXTAREA元素。
1.构建要发送回服务器的数据字符串。该字符串的格式类似于“name1=value1&name2=value2”(就像在查询字符串中一样)。每个值都需要进行URL编码。
1.如果表单的“method”属性是“GET”,那么在“action”属性中获取URL,添加一个“?”和数据字符串,然后向URL发出一个“GET”Web请求。
1.如果表单的“方法”是“POST”,那么数据将在Web请求的不同区域提交。请查看this page中的C#代码。
ukdjmx9f3#
为了扩展大卫和JP的回答:
假设您正在处理内容不熟悉的表单,您可能可以......
1.通过HttpWebRequest获取包含表单的页面。
1.将其加载到XmlDocument中
1.使用XPath遍历/选择表单元素。
1.基于元素构建查询字符串/发布数据。
1.使用HttpWebRequest发送数据
如果表单的结构是事先知道的,那么您实际上可以从#4开始。
(未经测试)示例(我的XPath不是很好,所以语法肯定不太正确):
参考文献:
t1qtbnec4#
如果你不想走HttpWebRequest的路线,我建议使用WatiN。它可以很容易地自动化IE或Firefox,而不必担心HTTP请求的内部问题。