I get cookie from InternetGetCookieEx on DownloadComplete WebBrwoser. When trying to login to hotmail it get's through but then get's redirected. Even though Gmail works. I am trying to figure out a universal solution to transfer Authenication from WebBrowser to IdCookieManager for Web Parsing.
Test Project = http://www.megafileupload.com/en/file/373536/Cookie-Tester-rar.html
Cookies aswell as redirects are enabled on IdHTPP.
Cookies must be allowed Your browser is currently set to block cookies. Your browser must allow cookies before you can use Windows Live ID.
function GetCookie(host: string): string;
const
INTERNET_COOKIE_HTTPONLY = 8192;
var
hModule: THandle;
lp: Pointer;
InternetGetCookieEx: function(lpszUrl, lpszCookieName, lpszCookieData
: PAnsiChar; var lpdwSize: DWORD; dwFlags: DWORD; lpReserved: pointer)
: BOOL; stdCall;
CookieSize: DWORD;
CookieData: PAnsiChar;
begin
LoadLibrary('wininet.dll');
hModule := GetModuleHandle('wininet.dll');
if hModule <> 0 then
begin
@InternetGetCookieEx := GetProcAddress(hModule, 'InternetGetCookieExA');
if @InternetGetCookieEx <> nil then
begin
CookieSize := 1024;
Cookiedata := AllocMem(CookieSize);
if InternetGetCookieEx(PAnsiChar(AnsiString(host)), nil, Cookiedata, CookieSize, INTERNET_COOKIE_HTTPONLY, nil) then
result:=cookiedata;
FreeMem(Cookiedata);
end;
end;
end;
procedure EmbeddedWB1DocumentComplete(ASender: TObject; const pDisp: IDispatch;
var URL: OleVariant);
var
document: IHTMLDocument2;
cookies: TStringList;
uri: TIdURI;
begin
document := EmbeddedWB1.Document as IHTMLDocument2;
cookies := TStringList.Create;
try
cookies.Delimiter:=';';
//cookies.DelimitedText:=GetCookie(document.url);
cookies.DelimitedText:=document.cookie;
uri := TIdURI.Create(document.url);
try
IdCookieManager1.AddServerCookies(cookies,uri);
EmbeddedWB1.LoadFromString(http.Get(document.url));
finally
uri.Free;
end;
finally
cookies.Free;
end;