很多應用中開發者需要自己構建一個浏覽器並且對通過這個浏覽器提交的請求進行截獲比如用戶通過這個浏覽器浏覽了一個網頁並向網站提交(POST)了一些信息我們想在其提交到網站前對這些POST數據在浏覽器側進行截獲做一些跟蹤日志或者對這些數據先加密或轉換後再發送到服務器Net 提供的WebBrowser 控件可以讓開發者很輕松的構建一個類似IE的浏覽器但這個控件提供的事件較少一些高級應用單純用這個控件提供的方法和事件無法實現這篇文章我想介紹一下如何讓 WebBrowser 控件可以截獲自己POST出去的數據
在 Form_Load 中添加如下語句
SHDocVwWebBrowser wb = (SHDocVwWebBrowser)webBrowserActiveXInstance;
wbBeforeNavigate +=
new DWebBrowserEvents_BeforeNavigateEventHandler(WebBrowser_BeforeNavigate);
private void WebBrowser_BeforeNavigate(object pDisp ref object URL ref object Flags
ref object TargetFrameName ref object PostData ref object Headers ref bool Cancel)
{
string postDataText = SystemTextEncodingASCIIGetString(PostData as byte[]);
}
完成上述步後你post 數據時 就會響應 BeforeNavigate 事件postDataText 中就是你post的數據你也可以修改PostData對這些數據進行轉換或加密
添加如下成員函數
WebBrowser 其實是對 ActiveX 控件 SHDocVw 的封裝而這個SHDocVw的很多底層調用WebBrowser控件並沒有提供實現我們需要直接操作 SHDoceVw 控件來實現這些高級調用
操作方法如下
在 windows/system 目錄下找到 shdocvwdll 這個動態庫將其添加到引用中
From:http://tw.wingwit.com/Article/program/net/201311/13793.html