栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

WinForm项目开发中WebBrowser用法实例汇总

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

WinForm项目开发中WebBrowser用法实例汇总

本文实例汇总了WinForm项目开发中WebBrowser用法,希望对大家项目开发中使用WebBrowser起到一定的帮助,具体用法如下:

1.

[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
[ComVisibleAttribute(true)]
public partial class frmWebdata: Form
{
public frmWebData()
{
  InitializeComponent();
}
protected override void onLoad(EventArgs e)
{
  wbService.ObjectForscripting = this;
  base.onLoad(e);
}
}

2.后台调用Javascript脚本


后台代码

static string ErrorMsg = string.Empty;
private void wbService_documentCompleted(object sender, WebBrowserdocumentCompletedEventArgs e)
{
  if (!string.IsNullOrEmpty(ErrorMsg))
 wbService.document.Invokescript("ErrorMessage", new object[1] { string.Format("操作失败,原因:{0}!", ErrorMsg) });
}

3.Javascript脚本调用后台方法

脚本代码

  
 

操作正在响应中.....

刷新

 
   
   
   
 
  

后台代码

public void DoSvrWebDbBack()
{
  try
  {
  }
  catch (TimeoutException)
  {
 ErrorMsg = "超时,请稍候再尝试!";
  }
  catch (Exception ex)
  {
 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)]
public static extern bool InternetSetcookie(string urlName, string cookieName, string cookieData);

5.请求链接获取返回处理

public class HttpWebRequestToolV2
{
public delegate HttpWebRequest RequestRule(string url);
/// 
/// 发起HttpWebResponse请求
/// 
/// 请求连接
/// 请求参数
/// 请求设置『委托』,当委托等于NULL的时候,默认请求;否则使用所设置的HttpWebRequest
/// HttpWebResponse
public static HttpWebResponse CreateHttpWebRequest(string url, byte[] credentials, RequestRule httpWebRequestRule)
{
  if (string.IsNullOrEmpty(url))
 throw new ArgumentNullException("url");

  HttpWebRequest _request = null;
  if (httpWebRequestRule != null)
  {
 _request = httpWebRequestRule(url);
  }
  else
  {
 _request = WebRequest.Create(url) as HttpWebRequest;
 _request.Method = "POST";
 _request.ContentType = "application/x-www-form-urlencoded";
 _request.cookieContainer = new cookieContainer();
  }

  if (credentials != null)
  {
 _request.ContentLength = credentials.Length;
 using (var requestStream = _request.GetRequestStream())
 {
   requestStream.Write(credentials, 0, credentials.Length);
 }
  }
  return _request.GetResponse() as HttpWebResponse;
}

/// 
/// 创建验证凭证
/// eg:
/// IDictionary _requestCredentials = new Dictionary();
///_requestCredentials.Add("UserName", _userName);
///_requestCredentials.Add("PassWord", _userPwd);
///_requestCredentials.Add("MacAddress", _macAddress);
///byte[] _credentials = HttpWebRequestToolV2.CreateCredentials(_requestCredentials, Encoding.UTF8);
/// 
/// 
public static byte[] CreateCredentials(IDictionary credentials, Encoding encoding)
{
  if (credentials == null)
 throw new ArgumentNullException("credentials");
  if (credentials.Count == 0)
 throw new ArgumentException("credentials");
  if (encoding == null)
 throw new ArgumentNullException("encoding");

  StringBuilder _credentials = new StringBuilder();
  foreach (KeyValuePair credential in credentials)
  {
 _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);
  return encoding.GetBytes(_credentialsString);

}

使用示例

public static HttpWebRequest RequestSetting(string url)
{
  HttpWebRequest _request = null;
  _request = WebRequest.Create(url) as HttpWebRequest;
  _request.Method = "POST";
  _request.ContentType = "application/x-www-form-urlencoded";
  _request.Timeout = 1000 * 10;//超时五秒
  _request.cookieContainer = new cookieContainer();
  return _request;
}

/// 
/// 登录web网页验证
/// 
/// 超链接
/// 用户名
/// 密码
/// MAC地址
/// 会话
/// 网页登录验证是否成功『失败,将抛出网页验证验证失败信息』
public bool ProcessRemoteLogin(string url, string _userName, string _userPwd, string _macAddress, out cookie sessionID)
{

  bool _checkResult = false;
  string _errorMessage = string.Empty;
  //--------------------创建登录凭证--------------------
  IDictionary _requestCredentials = new Dictionary();
  _requestCredentials.Add("UserName", _userName);
  _requestCredentials.Add("PassWord", _userPwd);
  _requestCredentials.Add("MacAddress", _macAddress);

  byte[] _credentials = HttpWebRequestToolV2.
CreateCredentials

(_requestCredentials, Encoding.UTF8);
  //-----------------------------------------------------

  cookieCollection _cookie = null;
  
  using (HttpWebResponse _httpRespone = HttpWebRequestToolV2.
CreateHttpWebRequest

(url, _credentials, RequestSetting))
  {
 _cookie = new cookieCollection();
 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))
 throw new Exception(_errorMessage);
  return _checkResult;
}

6.从WebBrowser中获取cookieContainer

/// 
/// 从WebBrowser中获取cookieContainer
/// 
/// WebBrowser对象
/// cookieContainer
public static cookieContainer GetcookieContainer(this WebBrowser webBrowser)
{
  if (webBrowser == null)
 throw new ArgumentNullException("webBrowser");
  cookieContainer _cookieContainer = new cookieContainer();

  string _cookieString = webBrowser.document.cookie;
  if (string.IsNullOrEmpty(_cookieString)) return _cookieContainer;

  string[] _cookies = _cookieString.Split(';');
  if (_cookies == null) return _cookieContainer;

  foreach (string cookieString in _cookies)
  {
 string[] _cookieNamevalue = cookieString.Split('=');
 if (_cookieNamevalue.Length != 2) continue;
 cookie _cookie = new cookie(_cookieNamevalue[0].Trim().ToString(), _cookieNamevalue[1].Trim().ToString());
 _cookieContainer.Add(_cookie);
  }
  return _cookieContainer;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/126286.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号