Delphi IDhttp 获取Cookie

本文介绍了如何使用Delphi语言获取IDHTTP返回的Cookie,包括获取全部Cookie和通过属性名和属性值获取个别Cookie的方法。

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

获取post,或者get返回的cookie,除了过滤返回的字符串之外,最简单的方法是使用idhttp的CookieManager属性

比如获得IDhttp返回的全部Cookie

[delphi]  view plain  copy
 print ?
  1. if idhttp1.CookieManager.CookieCollection.Count > 0 then  
  2.     for i := 0 to idhttp1.CookieManager.CookieCollection.Count - 1 do  
  3.       temp := temp + idhttp1.CookieManager.CookieCollection.Items[i] .CookieText + ';';  

也可以通过属性名和属性值的形式获得,这样就可以提取出个别的Cookie值

[delphi]  view plain  copy
 print ?
  1. idhttp1.CookieManager.CookieCollection.Items[i]  
  2.           .CookieName idhttp1.CookieManager.CookieCollection.Items[i]  
  3.           .Value  

比如:

[delphi]  view plain  copy
 print ?
  1. temp := TStringList.Create;  
  2.   if idhttp1.CookieManager.CookieCollection.Count > 0 then  
  3.     for i := 0 to idhttp1.CookieManager.CookieCollection.Count - 1 do  
  4.       // temp := temp + idhttp1.CookieManager.CookieCollection.Items[i] .CookieText + ';';  
  5.       temp.Add(idhttp1.CookieManager.CookieCollection.Items[i]  
  6.           .CookieName + '=' + idhttp1.CookieManager.CookieCollection.Items[i]  
  7.           .Value);  

获取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 GetCookieString(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(); } private void webBrowser1_DocumentCompleted_1(object sender, WebBrowserDocumentCompletedEventArgs e) { richTextBox1.Text = string.Empty; if (cbcookie.Checked) { if (checkBox1.Checked) { richTextBox1.Text = GetCookieString(textBox1.Text.Trim()); } else { richTextBox1.Text = webBrowser1.Document.Cookie; } } } 复制代码 //本事件是当每次加载完成当前页面后才会执行的 private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { //e.Url是当前加载的页面, if (e.Url.ToString().Contains("http://www.3yeah.com")) { //执行操作1 } else if (e.Url.ToString().Contains("http://baidu.com")) { //执行操作2 } } 复制代码 private void webBrowser1_NewWindow(object sender, CancelEventArgs e) { if (cbwindownew.Checked) { string url = ((System.Windows.Forms.WebBrowser)sender).StatusText; webBrowser1.Navigate(url); e.Cancel = true; } } 复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值