TNetHTTPClient清除cookie

时间:2018-04-14 21:27:36

标签: http delphi cookies firemonkey

我在Delphi 10.2.3 Firemonkey项目中使用TNetHTTPClient,并希望清除所有存储的cookie。我在帮助文件中找不到任何解决方案。我尝试了这段代码,但是我得到了数组只读的错误:

SetLength(NetHTTPClient1.CookieManager.Cookies, 0);

如何在不破坏TNetHTTPClient实例并再次创建的情况下清除所有cookie?

2 个答案:

答案 0 :(得分:1)

只是一个想法:

for i := 0 to High(NetHTTPClient1.CookieManager.Cookies)
  do NetHTTPClient1.CookieManager.Cookies[i].Expires := Now - 1;

NetHTTPClient1.CookieManager.dCookies;

这样您就可以将所有Cookie设置为已过期。 再次获取Cookie会调用内部调用GetCookies

DeleteExpiredCookies

修改

不幸的是,这不起作用(详见下面的评论)

答案 1 :(得分:0)

我想通了,非常感谢BigBother和Toon Krijthe在another thread关于班级助手的问题!

由于CookieManager.Cookies是只读的,我试图通过类帮助程序访问私有字段TCookies,自从10.1柏林以来,它不再起作用了。然而,Toon Krijthe找到了一条路,我根据自己的需要进行了调整:

接口:

type
  TCookieManagerHelper = class helper for TCookieManager
    procedure DeleteCookies;
  end;

实现:

procedure TCookieManagerHelper.DeleteCookies;
begin
  with self do
    FCookies.clear;
end;

每当我想清除cookies时:

NetHTTPClient1.CookieManager.DeleteCookies;

我必须补充一点,这可能不适用于Delphi的未来版本,因为Embarcadero故意禁止通过类帮助程序访问私有字段。