開發網頁自動化輔助程式,核心在於 HTTP 請求模擬。必備工具:
封裝 HttpWebRequest,支援 Cookie 容器、自定義 Header、編碼、User-Agent 等:
public class HttpHelper
{
private CookieContainer cc;
private string contentType = "application/x-www-form-urlencoded";
private string userAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)";
private Encoding encoding = Encoding.GetEncoding("utf-8");
public CookieContainer CookieContainer => cc;
public Encoding Encoding { get => encoding; set => encoding = value; }
public HttpHelper() { cc = new CookieContainer(); }
public HttpHelper(CookieContainer cc) { this.cc = cc; }
///
/// 統一請求入口
///
public string GetHtml(string url, string postData, bool isPost, CookieContainer cookieContainer)
{
byte[] byteRequest = Encoding.Default.GetBytes(postData ?? "");
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.CookieContainer = cookieContainer;
req.ContentType = contentType;
req.Referer = url;
req.Accept = accept;
req.UserAgent = userAgent;
req.Method = isPost ? "POST" : "GET";
if (isPost)
{
req.ContentLength = byteRequest.Length;
using (Stream stream = req.GetRequestStream())
stream.Write(byteRequest, 0, byteRequest.Length);
}
using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse())
using (Stream respStream = resp.GetResponseStream())
using (StreamReader reader = new StreamReader(respStream, encoding))
return reader.ReadToEnd();
}
// 多載方法省略...
}
此類別為後續所有功能(登入、獲取車位、貼條等)提供統一的網路通訊基礎,體現了「封裝變化」的設計原則。