加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 将TIDCookieManager中的Cookies保存到文件中

发布时间:2020-12-15 09:25:36 所属栏目:大数据 来源:网络整理
导读:如何将TIdCookieManager中的cookie保存到文件中以便以后使用?喜欢浏览器cookie. 解决方法 TIdCookieManager对于在文件中保留cookie数据没有任何本机支持.你必须手动实现它.使用TIdCookieManager.CookieCollection属性可以访问cookie对象列表.例如: uses ..
如何将TIdCookieManager中的cookie保存到文件中以便以后使用?喜欢浏览器cookie.

解决方法

TIdCookieManager对于在文件中保留cookie数据没有任何本机支持.你必须手动实现它.使用TIdCookieManager.CookieCollection属性可以访问cookie对象列表.例如:

uses
  ...,IdCookie,IdCookieManager;

var
  Cookies: TIdCookieList;
  Cookie: TIdCookie;
  I: Integer;
begin
  Cookies := IdCookieManager.CookieCollection.LockCookieList(caRead);
  try
    for I := 0 to Cookies.Count-1 do
    begin
      Cookie := Cookies[I];
      // save Cookie properties as needed...
    end;
  finally
    IdCookieManager.CookieCollection.UnlockCookieList(caRead);
  end;
end;

.

uses
  ...,IdCookieManager;

var
  Cookies: TIdCookies;
  Cookie: TIdCookie;
begin
  Cookies := IdCookieManager.CookieCollection.LockCookieList(caReadWrite);
  try
    for (each saved cookie) do
    begin
      Cookie := IdCookieManager.CookieCollection.Add;
      try
        // read Cookie properties as needed...
        Cookies.Add(Cookie);
      except
        Cookie.Free;
        raise;
      end;
    end;
  finally
    IdCookieManager.CookieCollection.UnlockCookieList(caReadWrite);
  end;
end;

或者:

uses
  ...,IdCookieManager;

var
  Cookies: TIdCookieList;
  Cookie: TIdCookie;
  I: Integer;
  S: string;
begin
  Cookies := IdCookieManager.CookieCollection.LockCookieList(caRead);
  try
    for I := 0 to Cookies.Count-1 do
    begin
      Cookie := Cookies[I];
      S := Cookie.ServerCookie;
      // save S as needed...
    end;
  finally
    IdCookieManager.CookieCollection.UnlockCookieList(caRead);
  end;
end;

.

uses
  ...,IdCookieManager,IdURI;

var
  S: string;
  Cookies: TIdCookies;
  Cookie: TIdCookie;
  Uri: TIdURI;
begin
  Cookies := IdCookieManager.CookieCollection.LockCookieList(caReadWrite);
  try
    for (each saved cookie) do
    begin
      // read S as needed
      S := ...;
      Uri := TIdURI.Create(URL where cookie came from);
      try
        Cookie := IdCookieManager.CookieCollection.Add;
        try
          Cookie.ParseServerCookie(S,Uri);
          Cookies.Add(Cookie);
        except
          Cookie.Free;
          raise;
        end;
    finally
      Uri.Free;
    end;
  finally
    IdCookieManager.CookieCollection.UnlockCookieList(caReadWrite);
  end;
end;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读