WinForm项目开发中WebBrowser用法实例汇总
本文实例汇总了WinForm项目开发中WebBrowser用法,希望对大家项目开发中使用WebBrowser起到一定的帮助,具体用法如下:
1.
[PermissionSet(SecurityAction.Demand,Name="FullTrust")]
[ComVisibleAttribute(true)]
publicpartialclassfrmWebData:Form
{
publicfrmWebData()
{
InitializeComponent();
}
protectedoverridevoidOnLoad(EventArgse)
{
wbService.ObjectForScripting=this;
base.OnLoad(e);
}
}
2.后台调用Javascript脚本
<scripttype="text/javascript"language="javascript">
functionErrorMessage(message){
document.getElementById("error").innerText=message;
}
</script>
后台代码
staticstringErrorMsg=string.Empty;
privatevoidwbService_DocumentCompleted(objectsender,WebBrowserDocumentCompletedEventArgse)
{
if(!string.IsNullOrEmpty(ErrorMsg))
wbService.Document.InvokeScript("ErrorMessage",newobject[1]{string.Format("操作失败,原因:{0}!",ErrorMsg)});
}
3.JavaScript脚本调用后台方法
脚本代码
<divid="content"> <h2id="error"> 操作正在响应中.....</h2> <divclass="utilities"> <aclass="buttonright" onclick="window.external.DoSvrWebDbBack()">
刷新
</a> <!--<aclass="buttonright" onclick="window.external.NavigateToLogin()">重新登录</a>--> <divclass="clear"> </div> </div> </div>
后台代码
publicvoidDoSvrWebDbBack()
{
try
{
}
catch(TimeoutException)
{
ErrorMsg="超时,请稍候再尝试!";
}
catch(Exceptionex)
{
ErrorMsg=ex.Message.ToString();
}
}
4.设置cookie
Cookie_cookie=BaseWinForm.LoginMessage.SessionID2;
InternetSetCookie(BaseWinForm.LoginMessage.SvrWebDbBack,"ASP.NET_SessionId",_cookie.Value);
wbService.Navigate(BaseWinForm.LoginMessage.SvrWebDbBack,null,null,string.Format("Referer:{0}",BaseWinForm.LoginMessage.SvrWebDbLoingUrl));
[DllImport("wininet.dll",CharSet=CharSet.Auto,SetLastError=true)]
publicstaticexternboolInternetSetCookie(stringurlName,stringcookieName,stringcookieData);
5.请求链接获取返回处理
publicclassHttpWebRequestToolV2
{
publicdelegateHttpWebRequestRequestRule(stringurl);
///<summary>
///发起HttpWebResponse请求
///</summary>
///<paramname="url">请求连接</param>
///<paramname="credentials">请求参数</param>
///<paramname="httpWebRequestRule">请求设置『委托』,当委托等于NULL的时候,默认请求;否则使用所设置的HttpWebRequest</param>
///<returns>HttpWebResponse</returns>
publicstaticHttpWebResponseCreateHttpWebRequest(stringurl,byte[]credentials,RequestRulehttpWebRequestRule)
{
if(string.IsNullOrEmpty(url))
thrownewArgumentNullException("url");
HttpWebRequest_request=null;
if(httpWebRequestRule!=null)
{
_request=httpWebRequestRule(url);
}
else
{
_request=WebRequest.Create(url)asHttpWebRequest;
_request.Method="POST";
_request.ContentType="application/x-www-form-urlencoded";
_request.CookieContainer=newCookieContainer();
}
if(credentials!=null)
{
_request.ContentLength=credentials.Length;
using(varrequestStream=_request.GetRequestStream())
{
requestStream.Write(credentials,0,credentials.Length);
}
}
return_request.GetResponse()asHttpWebResponse;
}
///<summary>
///创建验证凭证
///eg:
///IDictionary<string,string>_requestCredentials=newDictionary<string,string>();
///_requestCredentials.Add("UserName",_userName);
///_requestCredentials.Add("PassWord",_userPwd);
///_requestCredentials.Add("MacAddress",_macAddress);
///byte[]_credentials=HttpWebRequestToolV2.CreateCredentials(_requestCredentials,Encoding.UTF8);
///</summary>
///<returns></returns>
publicstaticbyte[]CreateCredentials(IDictionary<string,string>credentials,Encodingencoding)
{
if(credentials==null)
thrownewArgumentNullException("credentials");
if(credentials.Count==0)
thrownewArgumentException("credentials");
if(encoding==null)
thrownewArgumentNullException("encoding");
StringBuilder_credentials=newStringBuilder();
foreach(KeyValuePair<string,string>credentialincredentials)
{
_credentials.AppendFormat("{0}={1}&",credential.Key,credential.Value);
}
string_credentialsString=_credentials.ToString().Trim();
int_endIndex=_credentialsString.LastIndexOf('&');
if(_endIndex!=-1)
_credentialsString=_credentialsString.Substring(0,_endIndex);
returnencoding.GetBytes(_credentialsString);
}
使用示例
publicstaticHttpWebRequestRequestSetting(stringurl)
{
HttpWebRequest_request=null;
_request=WebRequest.Create(url)asHttpWebRequest;
_request.Method="POST";
_request.ContentType="application/x-www-form-urlencoded";
_request.Timeout=1000*10;//超时五秒
_request.CookieContainer=newCookieContainer();
return_request;
}
///<summary>
///登录web网页验证
///</summary>
///<paramname="url">超链接</param>
///<paramname="_userName">用户名</param>
///<paramname="_userPwd">密码</param>
///<paramname="_macAddress">MAC地址</param>
///<paramname="sessionID">会话</param>
///<returns>网页登录验证是否成功『失败,将抛出网页验证验证失败信息』</returns>
publicboolProcessRemoteLogin(stringurl,string_userName,string_userPwd,string_macAddress,outCookiesessionID)
{
bool_checkResult=false;
string_errorMessage=string.Empty;
//--------------------创建登录凭证--------------------
IDictionary<string,string>_requestCredentials=newDictionary<string,string>();
_requestCredentials.Add("UserName",_userName);
_requestCredentials.Add("PassWord",_userPwd);
_requestCredentials.Add("MacAddress",_macAddress);
byte[]_credentials=HttpWebRequestToolV2.
CreateCredentials
(_requestCredentials,Encoding.UTF8);
//-----------------------------------------------------
CookieCollection_cookie=null;
/*
*LoginType1:成功0:失败
*Err失败原因
*/
using(HttpWebResponse_httpRespone=HttpWebRequestToolV2.
CreateHttpWebRequest
(url,_credentials,RequestSetting))
{
_cookie=newCookieCollection();
if(_httpRespone.Cookies.Count>0)
_cookie.Add(_httpRespone.Cookies);
}
//-------------------------------------------------------
Cookie_loginType=_cookie["LoginType"];
sessionID=_cookie["ASP.NET_SessionId"];
Cookie_err=_cookie["Err"];
if(_loginType!=null&&_err!=null&&sessionID!=null)
{
_checkResult=_loginType.Value.Equals("1");
if(!_checkResult)
_errorMessage=HttpUtility.UrlDecode(_err.Value);
}
else
{
_errorMessage="Web服务异常,请稍候在试!";
}
if(!string.IsNullOrEmpty(_errorMessage))
thrownewException(_errorMessage);
return_checkResult;
}
6.从WebBrowser中获取CookieContainer
///<summary>
///从WebBrowser中获取CookieContainer
///</summary>
///<paramname="webBrowser">WebBrowser对象</param>
///<returns>CookieContainer</returns>
publicstaticCookieContainerGetCookieContainer(thisWebBrowserwebBrowser)
{
if(webBrowser==null)
thrownewArgumentNullException("webBrowser");
CookieContainer_cookieContainer=newCookieContainer();
string_cookieString=webBrowser.Document.Cookie;
if(string.IsNullOrEmpty(_cookieString))return_cookieContainer;
string[]_cookies=_cookieString.Split(';');
if(_cookies==null)return_cookieContainer;
foreach(stringcookieStringin_cookies)
{
string[]_cookieNameValue=cookieString.Split('=');
if(_cookieNameValue.Length!=2)continue;
Cookie_cookie=newCookie(_cookieNameValue[0].Trim().ToString(),_cookieNameValue[1].Trim().ToString());
_cookieContainer.Add(_cookie);
}
return_cookieContainer;
}