임펠리테리입니다.
쿠키값을 알아오기 위해 WebDispatcher 를 쓰려고 하시는 것 같은데.. 어느분이 알려주셨는지는 몰라도
앞뒤없이 알려주셨군요.
WebDispatcher는 CGI나 ISAPI등의 웹어플리케이션에서만 사용하는 것입니다. 일반 윈도우 어플에서는 쓸 수 없구요.
게다가 웹어플리케이션에서도, 자동적으로 만들어지는 웹모듈에 웹디스패처가 이미 포함되어 있으므로
이 컴퍼넌트를 직접 디자인타임에 놓고 쓸 일은 거의 없습니다.
원래 쿠키라는 것은 웹브라우저에서 내부적으로 사용하는 것이므로 외부 프로그램에서 쿠키를 읽거나 설정하는
방법은 사용하는 웹브라우저마다 방법을 공개할 수도 있고 안할 수도 있는 겁니다. 넷스케이프같은 경우에는
간단한 방법이 없구요.
IE의 경우에는 IE 라이브러리라고 할 수 있는 WinINet에서 방법을 제공합니다.
간단한 예제를 보이면...
AnsiString __fastcall GetLocalCookie(AnsiString URL, AnsiString Name)
{
AnsiString CookieData;
DWORD dwSize;
InternetGetCookie(URL.c_str(), NULL, NULL, &dwSize);
CookieData.SetLength(dwSize);
InternetGetCookie(URL.c_str(), NULL, CookieData.c_str(), &dwSize);
TStringList *slCookies = new TStringList;
slCookies->Text = StringReplace(CookieData, "; ", "\n", TReplaceFlags()<<rfReplaceAll);
AnsiString Result = slCookies->Values[Name];
delete slCookies;
return Result;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShowMessage(GetLocalCookie("
http://www.bcbdn.com", "impboard-UserName"));
}
만약 브라우저를 IE로 쓰시고, 또 bcbdn에 로그인하실 때 "저장" 체크박스에 체크한 상태로 로그인하셨다면
위와 같은 코드를 실행하셨을 때 가입시 설정한 이름이 나올 겁니다.
주의하실 점은.. 저장되지 않은 쿠키는 알아낼 수 없습니다. 저장되지 않은 쿠키는 브라우저의 메모리상에만
존재하므로 위 함수로 알아낼 방법이 없죠.
그럼 참고하시길...
김용환 님이 쓰신 글 :
: 어딜 뒤져봐도 사용법이 없네요..
: 첨쓰는 사람은 쓰지 말라는 소린가...
: 책에도 없구...
:
: 혹시 WebDispatcher 컴포넌트를 사용하신 기억이 있으신분은
: 알려주시면 정말 감사하겠습니다.
: 이걸 통해 쿠키를 받으려 하는데요..
: 헬프를 봐도 사용 예제도 없구..막막하네요..
: 책에도 없구..
: 이걸 사용해보신 분들..사용법좀 알려주세요..