WebBrowser 其實是對 ActiveX 控件 SHDocVw 的封裝,而這個SHDocVw的很多底層調用WebBrowser控件並沒有提供實現,你這個應用需要直接操作 SHDoceVw 控件才可以。操作方法如下: 1、在 windows/system32 目錄下找到 shdocvw.dll 這個動態庫,將其添加到引用中 2、在 Form1_Load 中添加如下語句 SHDocVw.WebBrowser wb = (SHDocVw.WebBrowser)webBrowser1.ActiveXInstance; wb.BeforeNavigate2 += new DWebBrowserEvents2_BeforeNavigate2EventHandler(WebBrowser_BeforeNavigate2); 3、添加如下成員函數 private void WebBrowser_BeforeNavigate2(object pDisp, ref object URL, ref object Flags, ref object TargetFrameName, ref object PostData, ref object Headers, ref bool Cancel) { string postDataText = System.Text.Encoding.ASCII.GetString(PostData as byte[]); } 完成上述3步后,你post 數據時, 就會響應 BeforeNavigate2 事件, postDataText 中就是你post的數據。 1.在WebBrowser中獲取Cookie CookieContainer myCookieContainer = new CookieContainer(); string cookieStr = webBrowser1.Document.Cookie; string[] cookstr = cookieStr.Split(';'); foreach (string str in cookstr) { string[] cookieNameValue = str.Split('='); Cookie ck = new Cookie(cookieNameValue[0].Trim ().ToString(), cookieNameValue[1].Trim ().ToString()); ck.Domain = "www.google.com "; myCookieContainer.Add(ck); } WebClient設置cookie! WebClient wc = new WebClient(); wc.Headers.Add("Cookie", "PHPSESSID=" + cookie + ";"); // 注意,這里是Cookie,不是Set-Cookie byte[] re = wc.UploadData(Global.RootPath + "test.php", new byte[0]); System.Text.UTF8Encoding converter = new System.Text.UTF8Encoding(); string str = converter.GetString(re); 2. 在WebBrowser中設置Cookie public partial class WebBrowserControl : Form { private String url; [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData); public WebBrowserControl(String path) { this.url = path; InitializeComponent(); // set cookie InternetSetCookie(url, "JSESSIONID", Globals.ThisDocument.sessionID); // navigate webBrowser.Navigate(url); } } 3.將WebBrowser的cookie信息傳給HttpWebRequest 先建一個"CookieContainer" 把WebBrowser中的Cookie保存在里面 //在WebBrowser中登錄cookie保存在WebBrowser.Document.Cookie中 CookieContainer myCookieContainer = new CookieContainer(); //String 的Cookie 要轉成 Cookie型的 並放入CookieContainer中 string cookieStr = webBrowser1.Document.Cookie; string[] cookstr = cookieStr.Split(';'); foreach (string str in cookstr) { string[] cookieNameValue = str.Split('='); Cookie ck = new Cookie(cookieNameValue[0].Trim().ToString(), cookieNameValue[1].Trim().ToString()); ck.Domain = "www.abc.com";// 必須寫對 myCookieContainer.Add(ck); } HttpWebRequest hreq = (HttpWebRequest)HttpWebRequest.Create("http://www.abc.com/search.asp "); hreq.Method = "POST"; hreq.ContentType = "application/x-www-form-urlencoded"; //自己創建的CookieContainer hreq.CookieContainer = myCookieContainer; string postdata = "id=2005&action=search&name="; byte[] byte1 = Encoding.ASCII.GetBytes(postdata); hreq.ContentLength = byte1.Length; Stream poststream = hreq.GetRequestStream(); poststream.Write(byte1, 0, byte1.Length); poststream.Close(); HttpWebResponse hres = (HttpWebResponse)hreq.GetResponse(); --------------------- 本文來自 aasmfox 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/aasmfox/article/details/8700588?utm_source=copy