INDY 10.1.5 - Which SSL dlls work with Delphi 2006?

后端 未结 5 1124
北荒
北荒 2020-12-09 17:12

I\'m trying to connect to google documents (following Marco Cantu\'s excellent REST example) but I am getting the following SSL errors:

1) If I use the SSL dlls from

5条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-09 18:11

    FWIW, since I have spent a lot of time getting this https thing to work, here are the results of my successful efforts.

    1- Delphi 7

    2- indy9.0.19_d7.exe

    3- IdSSLIOHandlerSocket1.SSLOptions.Method := sslvTLSv1; or,

    IdSSLIOHandlerSocket1.SSLOptions.Method := sslvTLSv23; or,

    IdSSLIOHandlerSocket1.SSLOptions.Method := sslvTLSv3;

    I tried indy10.0.76_d7.exe and indy10.1.5_d7.exe under Delphi 7 and I cannot get them to install properly, let alone get HTTPS to work. I get the infamous message "Unit IdSysWin32 was compiled with a different version of IdException.EIdException." I searched for a solution to that problem on the web and couldn't find one - loads of others had the same message.

    A useful site for testing https is https://msp.f-secure.com/web-test/common/test.html

    Here is my source:

    procedure TForm1.ButtonHTTPSClick(Sender: TObject);
    var
      IdHTTP1: TIdHTTP;
      ParamStringList: TStringList;
      s1: String;
      MemoryStream1: TMemoryStream;
      IdSSLIOHandlerSocket1:  TIdSSLIOHandlerSocket;
    begin //  ssl works fine must have Indy version indy9.0.19_d7.exe and must use option  sslvSSLv23
    
      Screen.Cursor := crHourGlass;
      IdHTTP1 := TIdHTTP.Create(nil);
      IdSSLIOHandlerSocket1 := TIdSSLIOHandlerSocket.Create(nil); 
      IdHTTP1.IOHandler := IdSSLIOHandlerSocket1;
    
    //  IdSSLIOHandlerSocket1.SSLOptions.Method := sslvTLSv1; // sslvSSLv1 works fine
        IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv3; // sslvSSLv3 works fine
    //  IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv23; // sslvSSLv23 works fine
    //  IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv2;   sslvSSLv2 does not work
        IdSSLIOHandlerSocket1.SSLOptions.Mode := sslmUnassigned;
        IdSSLIOHandlerSocket1.SSLOptions.VerifyMode := [];
      IdSSLIOHandlerSocket1.SSLOptions.VerifyDepth := 0;
    
      ParamStringList := TStringList.Create;
      MemoryStream1 := TMemoryStream.Create;
      s1 := IdHTTP1.Post('https://msp.f-secure.com/web-test/common/test.html', ParamStringList);
      MemoryStream1.Write(s1[1], Length(s1));
      MemoryStream1.Position := 0;
      MemoryStream1.SaveToFile('c:\temp\MemoryStream1.txt');
      Memo1.Lines.Clear;
      Memo1.Lines.LoadFromFile('c:\temp\MemoryStream1.txt');
      MemoryStream1.Free;
      ParamStringList.Free;
      IdSSLIOHandlerSocket1.Free;
      IdHTTP1.Free;
      Screen.Cursor := crDefault;
    end;
    

提交回复
热议问题