1. 程式人生 > >在 WinForm 中開啟頁面採用POST方式傳參

在 WinForm 中開啟頁面採用POST方式傳參

//呼叫方法
Dictionary<string, string> postData = new Dictionary<string, string>();
postData.Add("user", "aaa");
postData.Add("pass", "bbb");
 
GetPageByPost("http://www.xxx.com/send.aspx", postData, Encoding.UTF8);
 
/// <summary>
/// 以 Post 方式提交網頁資料,獲得伺服器返回的資料
/// </summary>
/// <param name="url"> Url </param>
/// <param name="postData">Post 資料</param>
/// <param name="encoder">網頁編碼</param>
/// <returns>伺服器返回的資料</returns>
public string GetPageByPost(string url, Dictionary<string, string> postData, Encoding encoder)
{
    string html = "";
 
    HttpWebRequest webReq = (HttpWebRequest)WebRequest.Create(url);
    webReq.Method = "POST";
 
    Stream reqStream = null;
    if (postData != null && postData.Count > 0) {
        StringBuilder sb = new StringBuilder();
        foreach (KeyValuePair<string, string> kv in postData) {
            sb.Append(HttpUtility.UrlEncode(kv.Key));
            sb.Append("=");
            sb.Append(HttpUtility.UrlEncode(kv.Value));
            sb.Append("&");
        }
 
        byte[] data = Encoding.UTF8.GetBytes(sb.ToString().TrimEnd('&'));
 
        webReq.ContentType = "application/x-www-form-urlencoded";
        webReq.ContentLength = data.Length;
        reqStream = webReq.GetRequestStream();
        reqStream.Write(data, 0, data.Length);
    }
 
    HttpWebResponse webResp = (HttpWebResponse)webReq.GetResponse();
    Stream stream = webResp.GetResponseStream();
    StreamReader sr = new StreamReader(stream, encoder);
    html = sr.ReadToEnd();

可以用HttpWebRequest和HttpWebResponse

或者WebRequest和WebResponse