开发者社区> 问答> 正文

webbrower控件,如何获取cookies

我用webbrower.Document.Cookie,获取的值不对

image.png

本问题来自阿里云开发者社区的【11大垂直技术领域开发者社群】。 https://developer.aliyun.com/article/706511 点击链接欢迎加入感兴趣的技术领域群。

展开
收起
游客mxpnxp6g3cq7o 2019-09-09 16:46:29 2422 0
2 条回答
写回答
取消 提交回答
  • 推荐回答

    1.在WebBrowser中获取Cookie

    CookieContainer myCookieContainer = new CookieContainer();

    string cookieStr = webBrowser1.Document.Cookie; string[] cookstr = cookieStr.Split(';'); foreach (string str in cookstr) { string[] cookieNameValue = str.Split('='); Cookie ck = new Cookie(cookieNameValue[0].Trim ().ToString(), cookieNameValue[1].Trim ().ToString()); ck.Domain = "www.google.com "; myCookieContainer.Add(ck); }

    WebClient设置cookie! WebClient wc = new WebClient(); wc.Headers.Add("Cookie", "PHPSESSID=" + cookie + ";"); // 注意,这里是Cookie,不是Set-Cookie byte[] re = wc.UploadData(Global.RootPath + "test.PHP", new byte[0]); System.Text.UTF8Encoding converter = new System.Text.UTF8Encoding(); string str = converter.GetString(re);

    1. 在WebBrowser中设置Cookie public partial class WebBrowserControl : Form { private String url;

      [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
      public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
      
      public WebBrowserControl(String path)
      {
          this.url = path;
          InitializeComponent();
      
          // set cookie
          InternetSetCookie(url, "JSESSIONID", Globals.ThisDocument.sessionID);
      
          // navigate
          webBrowser.Navigate(url);
      }        
      

    }

    3.将WebBrowser的cookie信息传给HttpWebRequest

    先建一个"CookieContainer" 把WebBrowser中的Cookie保存在里面

    //在WebBrowser中登录cookie保存在WebBrowser.Document.Cookie中
    CookieContainer myCookieContainer = new CookieContainer();

    //String 的Cookie 要转成 Cookie型的 并放入CookieContainer中 string cookieStr = webBrowser1.Document.Cookie; string[] cookstr = cookieStr.Split(';');

    foreach (string str in cookstr) { string[] cookieNameValue = str.Split('='); Cookie ck = new Cookie(cookieNameValue[0].Trim().ToString(), cookieNameValue[1].Trim().ToString()); ck.Domain = "www.abc.com";// 必须写对 myCookieContainer.Add(ck); }

    HttpWebRequest hreq = (HttpWebRequest)HttpWebRequest.Create("http://www.abc.com/search.asp "); hreq.Method = "POST"; hreq.ContentType = "application/x-www-form-urlencoded";

    //自己创建的CookieContainer hreq.CookieContainer = myCookieContainer;

    string postdata = "id=2005&action=search&name="; byte[] byte1 = Encoding.ASCII.GetBytes(postdata); hreq.ContentLength = byte1.Length;

    Stream poststream = hreq.GetRequestStream(); poststream.Write(byte1, 0, byte1.Length); poststream.Close();

    HttpWebResponse hres = (HttpWebResponse)hreq.GetResponse(); 转载于:https://blog.csdn.net/hkwlg1314/article/details/52187200

    2019-09-10 13:59:35
    赞同 展开评论 打赏
  • 精于基础,广于工具,熟于业务。

    firefox的webdeveloper获取下试试

    2019-09-10 16:48:14
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载