webbrowser设置cookie和获取cookie

本文介绍如何在Windows Forms(WinForm)应用程序中利用WebBrowser控件进行Cookie的设置与读取操作,包括在浏览网页时插入Cookie以及从浏览会话中提取Cookie的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Web;

namespace AuthClient.com.authclient.utils
{
    class IeCookieUtil
    {
        [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);

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

        public static string getInfoByCookie(string type)
        {
            //string cookStr = "cbAccount=11111;systemAccountId=0;systemCode=aaa";
            string cookStr = GetCookieString(BrowserUrlConfig.tymhCas);//传参是获取cookie的URL
            if (cookStr != null && !"".Equals(cookStr))
            {
                string[] sArray = Regex.Split(cookStr, ";", RegexOptions.IgnoreCase);
                foreach (string cookie in sArray)
                {
                    string[] cookieArry = Regex.Split(cookie, "=", RegexOptions.IgnoreCase);
                    foreach (string cook in cookieArry)
                    {
                        string tmpCook = cook.Trim();
                        if (tmpCook == type)
                        {
                            return cookieArry[1];
                        }
                    }
                }
            }
            return "";
        }


        private static string GetCookieString(string url)
        {
            // Determine the size of the cookie     
            uint datasize = 256;
            StringBuilder cookieData = new StringBuilder((int)datasize);

            if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x2000, IntPtr.Zero))
            {
                if (datasize < 0)
                    return null;

                // Allocate stringbuilder large enough to hold the cookie     
                cookieData = new StringBuilder((int)datasize);
                if (!InternetGetCookieEx(url, null, cookieData, ref datasize, 0x00002000, IntPtr.Zero))
                    return null;
            }
            return cookieData.ToString();
        }



        public static void setIECookie(string url, string name, string value)
        {
            System.Net.Cookie netCookie = new System.Net.Cookie(HttpUtility.UrlEncode(name).Replace("+", ""), HttpUtility.UrlEncode(value), "; expires = Session GMT", "/");
            InternetSetCookie(url, null, netCookie.ToString());
        }
    }
}
string cbAccount = IeCookieUtil.getInfoByCookie("cas_username_cookie");//读取key为cas_username_cookie的cookie值
IeCookieUtil.setIECookie(url,"driverVersion", "1.0.1");//网址、key、值

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值