• 随手记一次利用webbowser控件打开网页后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。

  • 相关阅读:
    11.2.0.3 实例启动现在提供Large Pages Information大内存页信息了
    RAC中增大db_cache_size引发的ORA04031错误
    11.2 中Oracle Cluster Registry(OCR)可选的存储设备
    所见即所得
    新的开始
    关于asp.net(C#)与C#.net之间的区别
    Asp.Net学习之母板
    Javascript闭包(Closure)初步接触
    JavaScript解析JSON及XML
    JavaScript之JSON详解
  • 原文地址:https://www.cnblogs.com/luo-super/p/5692109.html
Copyright © 2020-2023  润新知