一、在活動的應答項中設置cookie,以及在請求中讀同樣的cookie. 把Cookies 設置為應答的一部分,使用SetCookieField方法:
TStringList* Cookies = new TStringList();
Cookies->Add("Answer=42"); // whatever...
Response->SetCookieField(Cookies,NULL,NULL,Now()+1,false);
Cookies->Free();
注意:我們使用一個TStringList來設立一列Cookie值。(傳遞給SetCookieField 的第一個參數)。cookies的每一個列可以有一個主域(Domain) (第二個參數)和路徑(第三個參數)聯合起來。(象drbob42.com), 標識哪個URL是cookie將要發送去的。你可以留空這兩個參數(就象上面代碼一樣).第四個參數指定cookie結束日期,這裡我設置為"第二天的同個時間",使用Now()+1來設置。最後一個參數要指定,如果cookie的使用是通過一個安全的網絡(over a secure network)的話。
用戶如果認可這個cookie, 接著在一個OnAction事件中我們需要讀cookie的值。(以便確定回答字段的值)Cookie是請求類(Request
class)的一部分,就象ContentFields,所以可以使用CookieFields屬性來得到:
int Answer = StrToInt(request->CookieFields->Values["Answer"]);
注意:在調用StrToInt()可能會發生一個例外,(如空的串(string),這種情況下cookie將沒被設置,沒找到或終止) 所以在這裡要使用一個try-except。
二、使用VCL如何讀和寫cookies
讀一個cookie的值:
Request->CookieFields->Values["name of cookie"];
向一個cookie寫值:
Response->SetCookieField(TStrings* Values, AnsiString Domain, AnsiString APath, TDateTime AExpires, bool ASecure);