TNetHTTPClient 清除 cookie
TNetHTTPClient clear cookies
我在 Delphi 10.2.3 Firemonkey 项目中使用 TNetHTTPClient,我想清除所有存储的 cookie。我在帮助文件中没有找到任何解决方案。我试过这段代码,但我得到的错误是数组是只读的:
SetLength(NetHTTPClient1.CookieManager.Cookies, 0);
如何清除所有 cookie,而不破坏 TNetHTTPClient 的实例并重新创建它?
只是一个想法:
for i := 0 to High(NetHTTPClient1.CookieManager.Cookies)
do NetHTTPClient1.CookieManager.Cookies[i].Expires := Now - 1;
NetHTTPClient1.CookieManager.dCookies;
这样您就可以将所有cookies设置为过期。
再次获取 cookies 调用 GetCookies
内部调用 DeleteExpiredCookies
编辑
不幸的是,这不起作用(阅读下面的评论了解详情)
我明白了,非常感谢 中的 BigBother 和 Toon Krijthe 关于 class 帮助者!
由于 CookieManager.Cookies
是只读的,我试图通过 class 帮助程序访问私有字段 TCookies
,但自 10.1 Berlin 起不再有效。然而,Toon Krijthe 找到了一种方法,我根据自己的需要对其进行了调整:
接口:
type
TCookieManagerHelper = class helper for TCookieManager
procedure DeleteCookies;
end;
实施:
procedure TCookieManagerHelper.DeleteCookies;
begin
with self do
FCookies.clear;
end;
每当我想清除 cookie 时:
NetHTTPClient1.CookieManager.DeleteCookies;
我必须补充一点,这可能不适用于 Delphi 的未来版本,因为 Embarcadero 故意禁止通过 class 助手访问私有字段。
我在 Delphi 10.2.3 Firemonkey 项目中使用 TNetHTTPClient,我想清除所有存储的 cookie。我在帮助文件中没有找到任何解决方案。我试过这段代码,但我得到的错误是数组是只读的:
SetLength(NetHTTPClient1.CookieManager.Cookies, 0);
如何清除所有 cookie,而不破坏 TNetHTTPClient 的实例并重新创建它?
只是一个想法:
for i := 0 to High(NetHTTPClient1.CookieManager.Cookies)
do NetHTTPClient1.CookieManager.Cookies[i].Expires := Now - 1;
NetHTTPClient1.CookieManager.dCookies;
这样您就可以将所有cookies设置为过期。
再次获取 cookies 调用 GetCookies
内部调用 DeleteExpiredCookies
编辑
不幸的是,这不起作用(阅读下面的评论了解详情)
我明白了,非常感谢
由于 CookieManager.Cookies
是只读的,我试图通过 class 帮助程序访问私有字段 TCookies
,但自 10.1 Berlin 起不再有效。然而,Toon Krijthe 找到了一种方法,我根据自己的需要对其进行了调整:
接口:
type
TCookieManagerHelper = class helper for TCookieManager
procedure DeleteCookies;
end;
实施:
procedure TCookieManagerHelper.DeleteCookies;
begin
with self do
FCookies.clear;
end;
每当我想清除 cookie 时:
NetHTTPClient1.CookieManager.DeleteCookies;
我必须补充一点,这可能不适用于 Delphi 的未来版本,因为 Embarcadero 故意禁止通过 class 助手访问私有字段。