TIdCookieManager
後で使用できるように、Cookieをファイルに保存するにはどうすればよいですか?ブラウザのクッキーのように。
user1889268
質問する
3582 次
1 に答える
9
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
..., IdCookie, 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
..., IdCookie, 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
..., IdCookie, 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;
于 2013-01-17T18:24:42.737 に答える