搜尋此網誌

2018年1月6日 星期六

rad studio 10.2 在linux下indy 用openssl

試了好久才成功,網路上一時還找不到rad studio 10.2 在 linux 下run indy+openssl的資料
重點在於    IdSSLOpenSSLHeaders.IdOpenSSLSetLibPath('/lib/x86_64-linux-gnu');
看此目錄下是否有 libssl.so 及 libcrypt.so,目前用的linux 是ubuntu 16.1 x64
因不同linux 版本可能在不同目錄,要寫成通用版出來可能要在研究



program openssl_test;

{$APPTYPE CONSOLE}
{$R *.res}
uses
  System.SysUtils,
  IdSSL,
  IdSSLOpenSSL,
  IdSSLOpenSSLHeaders,
  idhttp,
  idioHandler,
  IdIOHandlerSocket,
  dateutils
  ;

var
  HTTP: TIdHTTP;
  idssl:TidSSLioHandlerSocketOpenSSL;
  s:string;
  dt:Tdatetime;
begin
  try
    { TODO -oUser -cConsole Main : Insert code here }
    IdSSLOpenSSLHeaders.IdOpenSSLSetLibPath('/lib/x86_64-linux-gnu');
    idSSLOpenSSL.LoadOpenSSLLibrary;
    // LoadOpenSSLLibrary fail Writeln(WhichFailedToLoad());
    idssl:=TidSSLioHandlerSocketOpenSSL.create;
    HTTP:= TIdHTTP.Create();
    http.IOHandler:=idssl;
    dt:=now();
    s:=http.Get('https://google.com');
    writeln('Use TIME:'+formatdatetime('ss-zzzz',now()-dt));
    writeln(s);
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;

end.

沒有留言: