簡體   English   中英

C#HTTP編程

[英]C# HTTP programming

我想構建一個可以處理某些html表單的軟件,該軟件將是一種可以自動處理我網站上的某些表單的bot。

有誰可以給​​我一些基本的步驟來完成這項工作...任何教程,示例,書籍或任何可以幫助我的東西。

你們中的一些人可以使用POST方法發布有效的代碼嗎?

查看如何:使用WebRequest類發送數據 它提供了一個示例,說明如何使用HttpWebRequest類創建一個頁面發布到另一個頁面。

填寫表格...

  1. 找到要填寫的所有INPUT或TEXTAREA元素。
  2. 構建要發送回服務器的數據字符串。 該字符串的格式類似於“ name1 = value1&name2 = value2”(就像在查詢字符串中一樣)。 每個值都需要進行URL編碼。
  3. 如果表單的“方法”屬性為“ GET”,則在“操作”屬性中獲取URL,並添加“?”。 和數據字符串,然后對URL進行“ GET” Web請求。
  4. 如果表單的“方法”為“ POST”,則數據將在Web請求的其他區域中提交。 此頁面上查看C#代碼。

擴展David和JP的答案:

假設您正在使用內容不熟悉的表單,則可能...

  1. 通過HttpWebRequest拉表單的頁面。
  2. 加載到XmlDocument中
  3. 使用XPath遍歷/選擇表單元素。
  4. 根據這些元素構建查詢字符串/發布數據。
  5. 使用HttWebRequest發送數據

如果表單的結構是事先已知的,那么您真的可以從#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()));

參考文獻:

如果您不想走HttpWebRequest路線,我建議您使用WatiN 使IE或Firefox自動化非常容易,而不必擔心HTTP請求的內部。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM