随手记一次利用webbowser控件打开网页后cookie读取与设置

本文介绍如何利用WinInet.dll组件中的InternetGetCookieEx和InternetSetCookie函数读取和设置Cookie。提供了完整的C#代码示例,包括处理包含特殊字符的Cookie值。

利用wininet.dll 组件读取cookie :

[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool InternetGetCookieEx(string pchURL, string pchCookieName, StringBuilder pchCookieData, ref System.UInt32 pcchCookieData, int dwFlags, IntPtr lpReserved);
private static string GetCookies(string url)
{
uint datasize = 1024;
StringBuilder cookieData = new StringBuilder((int)datasize);
if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x2000, IntPtr.Zero))
{
if (datasize < 0)
return null;

cookieData = new StringBuilder((int)datasize);
if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, IntPtr.Zero))
return null;
}
return cookieData.ToString();
}

备注:在cookie解析的过程中:

cookie的value中如果包含有,(逗号)的情况下,可用 %2C 替换掉

举例:

CookieContainer cookieContainer = new CookieContainer();
string cookieStr = GetCookies("http://abc.com/");

string[] cookstr = cookieStr.Split(';');
foreach (string str in cookstr)
{
string[] data= str.Split('=');
if (data[1].Trim().ToString().IndexOf(',') != -1)
{
data[1] = data[1].Trim().ToString().Replace(",", "%2C");
}
Cookie ck = new Cookie(data[0].Trim().ToString(), data[1].Trim().ToString());
cookieContainer .Add(new Uri("http://abc.com/"), ck);
}

 ========cookie的设置:===============================

[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);

public void WebBrowserControl(string url,string cookie)
{


foreach (string cookieItem in cookie.Split(';'))
{

string[] item = cookieItem .Split('=');
//set  cookie
InternetSetCookie(url, item[0], item[1]);

}

this.webBrowser1.Url = new Uri(url);

}

end。

转载于:https://www.cnblogs.com/luo-super/p/5692109.html

Delphi WebBrowser 控件是 Delphi 的一个重要组件,它可以嵌入在 Delphi 窗体中,用于显示和操作 Web 内容。在使用 Delphi WebBrowser 控件加载腾讯地图时,可以实现在 Delphi 窗体中显示腾讯地图,并之交互。 要加载腾讯地图,首先需要在 Delphi 窗体中添加一个 TWebBrowser 组件,然后设置其属性来指定加载的网页地址为腾讯地图的网址。例如,可以将其 URL 属性设置为 "https://map.qq.com",即可加载腾讯地图。 加载腾讯地图后,可以通过 Delphi WebBrowser 控件的内置方法和属性来地图进行交互。可以使用 Navigate 方法来导航到指定的地图页面,可以使用 Document 属性来访问网页的 DOM 结构,可以使用 ExecuteScript 方法来执行 JavaScript 脚本等。 通过 Delphi WebBrowser 控件,可以实现腾讯地图的各种功能,如搜索位置、标注标记、切换图层、放大缩小地图等。可以根据地图的 JavaScript API 文档来编写相应的代码,通过调用 JavaScript 函数实现特定的地图操作。 同时,Delphi WebBrowser 控件还支持事件处理,可以通过编写事件处理程序来响应地图的交互动作,如点击地图、拖动地图等。可以通过 OnDocumentComplete 和 OnClick 等事件来实现相应的处理逻辑。 总之,借助 Delphi WebBrowser 控件,我们可以很方便地实现在 Delphi 窗体中加载和操作腾讯地图,从而为用户提供更加丰富和交互性强的地图功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值