C# 模拟 Post
方式一:不启动IE,代码中Post
try { string url = "http:\\xxx.com" ; string postString = "uid=xx&pwd=xxx"; byte[] postData = Encoding.UTF8.GetBytes(postString); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(url)); request.Method = "POST"; //for some customer,use proxy, so add this. //refer:http://www.cnblogs.com/cxd4321/archive/2012/01/30/2331621.html request.ServicePoint.Expect100Continue = false; int timeout = 5000; Int32.TryParse(Settings.Default.LoginTimeOut, out timeout); if (timeout < 5000 || timeout > 15000) timeout = 5000; request.Timeout = timeout; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = postData.Length; using (Stream requestStream = request.GetRequestStream()) { requestStream.Write(postData, 0, postData.Length); } HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader stream = new StreamReader(response.GetResponseStream(), Encoding.Default); string srcString = stream.ReadToEnd(); response.Close(); stream.Close(); Trace.WriteLine(srcString); } catch (Exception ex) { Trace.WriteLine(ex); }
string url ="http://xxx.com" string postString = "parms=xx&pid=yyy"; byte[] postData = Encoding.UTF8.GetBytes(postString); WebClient webClient = new WebClient(); webClient.UseDefaultCredentials = true; webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); byte[] responseData = webClient.UploadData(url, "POST", postData); string srcString = Encoding.UTF8.GetString(responseData); Trace.WriteLine(srcString);
方式二:启动IE,并模拟Post
先添加引用,COM-->Microsoft Internet Controls
再添加代码:
string postData = "username=admin&password=admin"; var ie = new InternetExplorer(); object vPost, vHeaders, vFlags, vTargetFrame; vPost = null; vFlags = null; vTargetFrame = null; vHeaders = "Content-Type: application/x-www-form-urlencoded" + Convert.ToChar(10) + Convert.ToChar(13); if (!string.IsNullOrEmpty(postData)) vPost = ASCIIEncoding.Default.GetBytes(postData); ie.Visible = true; string url = "http://{IP}/validate"; ie.Navigate(url, ref vFlags, ref vTargetFrame, ref vPost, ref vHeaders);