var S: TStringList; M: TStream; begin S := TStringList.Create; M := TMemoryStream.Create; try S.Values['Email'] := 'your google account'; S.Values['Passwd'] := 'your password'; S.Values['source'] := 'estream-sqloffice-1.1.1.1'; S.Values['service'] := 'cl'; IdHTTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1; IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded'; IdHTTP1.Post('https://www.google.com/accounts/ClientLogin', S, M); Memo1.Lines.Add(Format('Response Code: %d', [IdHTTP1.ResponseCode])); Memo1.Lines.Add(Format('Response Text: %s', [IdHTTP1.ResponseText])); M.Position := 0; S.LoadFromStream(M); Memo1.Lines.AddStrings(S); finally S.Free; M.Free; end; end;
Tuesday, March 04, 2008
Using Indy HTTPS client to consume Google API service
Indy VCL 10 distribution supports SSL via OpenSSL but it didn't bundle the DLL library. We have to download the Win32 OpenDDL from here. After install the Win32 OpenSSL library, there are 2 .DLL files we are interested may be found in %windir%\system32: libssl32.dll and libeay32.dll.
However, the Indy Open SSL unit IdSSLOpenSSLHeaders.pas are coding as:
SSL_DLL_name = 'ssleay32.dll'; {Do not localize}
SSLCLIB_DLL_name = 'libeay32.dll'; {Do not localize}
To make the Indy works with OpenSSL, we have to rename one of the DLL file libssl32.dll to ssleay32.dll.
Here is a sample code using Indy VCL to authenticate with Google Calendar service:
Subscribe to:
Post Comments (Atom)
3 comments:
Hello,
Thank you for this page, this code is helping me a lot, but I have a problem, I receive "could not load ssl library" the first time a click the button, the next time I receive "read timeout" (connection closed gracefully) and after that I receive "application violation..", I downloaded the latest dlls from the link you supply here, but still get the error, could you share some light please?
Could you send your code and project to me?
"Could not load SSL library" :/
Post a Comment