请选择 进入手机版 | 继续访问电脑版

马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#问题入口 ASP.NET问题入口

【C#问题提交】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接毕业设计】 面试-葵花宝典下载

官方一群:

官方二群:

查看: 383|回复: 13

WinForm WebBrowser 设置cookie

  [复制链接]
  • TA的每日心情
    开心
    前天 21:32
  • 签到天数: 1610 天

    [LV.Master]伴坛终老

    4251

    主题

    6177

    帖子

    11万

    积分

    管理员

    IBC编程社区-原道楠

    Rank: 9Rank: 9Rank: 9

    积分
    111382

    推广达人突出贡献优秀版主荣誉管理论坛元老

    发表于 2019-12-26 09:03:32 | 显示全部楼层 |阅读模式

    马上加入IBC,查看更多教程

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    1. [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
    2. public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
    3. private void test(){
    4. string cookie = "name=小明; age=19;phone=13013139876"//必要设置到Webbrowser的Cookie信息
    5. string url = "http://192.168.1.12/data/2016/student.htm";//访问地点
    6. string domain = "/data/2016";//目的主机域名
    7. foreach (string c in cookie.Split(';'))
    8. {
    9. string[] item = c.Split('=');
    10. if (item.Length == 2)
    11. {
    12. InternetSetCookie(url, null, new Cookie(HttpUtility.UrlEncode(item[0]).Replace("+", ""), HttpUtility.UrlEncode(item[1]), "; expires = Session GMT", "/").ToString());
    13. }
    14. }
    15. webBrowser1.Navigate(url);
    16. }
    17. <br />
    复制代码

    要留意上面的代码.Replace(“+”, “”),我被这个狐疑了半天,导致Cookie只有第一个字段name设置乐成,反面的age,phone字段都没设置乐成,通过抓包分析,发现设置后的Cookie字段前面多了个”+”号,都说细节决定成败,确实云云。这个”+”号应该是HttpUtility.UrlEncode()编码后导致的,但是如果你不举行HttpUtility.UrlEncode()编码是绝对不可的,以是我们只好通过.Replace(“+”, “”)过滤掉”+”号,至此Cookie已经完美设置乐成。

    另有就是大概你手动设置Cookie的过程中由于传参错误或其他缘故起因导致webbrowser打开url提示错误500之类的,这时间必要手动打开电脑的IE欣赏器,然后扫除缓存记载Cookie等。就可以正常打开url了。

    1. <br /><br /><br />原文链接:https://blog.csdn.net/hangom/article/details/52619394
    复制代码
    C#论坛 www.ibcibc.com IBC编程社区
    C#
    C#论坛
    IBC编程社区
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则