idhttp1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
Memo1.Text := idhttp1.Get('https://passport.baidu.com/?login');按网上教程我下载了ssleay32.dll和libeay32.dll,但是都无法加载。最后从别人的一个程序:http://www.de86.cn/tbbl/barlord.zip里面拷出来这两个同名DLL。
转而提示Read Timeout。访问普通http协议的网页也是如此。
测试环境:
WinXP SP3+Delphi 2007+Indy 10.1.5

解决方案 »

  1.   

    去INDY的網站下站,這個DLL有的地方有所不同。
      

  2.   

    话说回来,idHTTP也只支持http而不支持https协议吧?
      

  3.   

    支持SSL的,不過9在下載證書的時候有點問題。還有就是那二個DLL的版本很多。我上次是在劉洋的網站上下載的。他提供的那個。
      

  4.   

    回复1楼:我在indy的网站上把所有版本的都下遍了还是提示无法加载。
    回复2楼:看网上教程需要IdSSLIOHandlerSocketOpenSSL才能支持,我是按照教程上做的。
    回复3楼:我用的是indy10.1.5,D2007自带的。请问能提供一下下载地址么?
    回复4楼:谢谢,我试一下。不过我还是喜欢用idhttp。
      

  5.   

    10.1.5版本的应该是OpenSSL0.97版本支持,可以到http://www.openssl.org下载
      

  6.   

    那用Indy10.2.3,对应版本的OpenSSL是0.9.8.h,这个版本的OpenSSL下载地址:http://indy.fulgan.com/SSL/
      

  7.   

    给个邮箱,我发一份OpenSSL 0.9.7m的DLL给你。
      

  8.   

    [email protected]
    谢谢!
      

  9.   

    对了,再说一下Indy安装的问题。我听9L说用10.2.3。我把D2007自带的删除了,然后安装。结果问题依旧(我下了9L说的版本,也许是没有卸载干净?)。
    谁能说一下indy的安装与卸载问题?请教了。
      

  10.   

    你是如何删除的?需要修改"Library Path","Browsing Path"和"Debug DCU Path"当中的Indy目录(菜单:Tools->Options...->Environment Options->Delphi Options->Type Library)我现在只是编译了0.9.7M,正在编译0.9.8J,一会编译完一并发到你邮箱。
      

  11.   

    Indy10.1.6及之后版本支持OpenSSL0.9.8x及以后版本。
      

  12.   

    我去掉Library Path就无法运行了...我确信我的方法有问题,程序还在uses系统自带的Indy10目录里的dcu文件(10.1.5)。但是控件是10.2.3的(版本信息)
      

  13.   

    收到了,谢谢!
    但是还是不能用。9.8的无法加载。9.7刚开始提示缺少MSVCR90.DLL,我从网上下载了一个放在根目录后转为提示:Runtime Error!
    Program: xxxxR6034
    An application has made an attempt to load the C runtime library incorrectly.
    Please contact the application's support team for more information.不知是indy的问题,Open SSL的问题还是运行库的问题?
      

  14.   

    var
        sReturn: string;
        Params: TStringStream;
        FIdHttp: TIdHttp;
        FSSLIOHandler: TIdSSLIOHandlerSocketOpenSSL;
    begin
        FIdHttp := TIdHttp.Create(self);
        FSSLIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(self);
        FSSLIOHandler.SSLOptions.RootCertFile := '根证书文件路径';
        FSSLIOHandler.SSLOptions.CertFile := '公钥证书文件路径';
        FSSLIOHandler.SSLOptions.KeyFile := '私钥证书文件路径';
        FSSLIOHandler.SSLOptions.CipherList := 参数信息;
        FSSLIOHandler.SSLOptions.VerifyDepth := 参数信息;
        FSSLIOHandler.SSLOptions.VerifyDirs := 参数信息;
        FSSLIOHandler.SSLOptions.Method := 参数信息;
        FSSLIOHandler.SSLOptions.Mode := 参数信息;
        FSSLIOHandler.SSLOptions.VerifyMode := 参数信息;
        FIdHttp.IOHandler := FSSLIOHandler;
        //参数根据实际情况设置。
        
        FIdHttp.Request.ContentType := 'application/x-www-form-urlencoded';
        FIdHttp.ReadTimeout := 1200000;
        sReturn := FIdHttp.Post(sURI + Handler, Params);
    end;
      

  15.   

    uses
    IdHTTP, IdHTTPHeaderInfo,IdMultipartFormData, IdGlobalProtocols, IdCoderMIME, IdSSLOpenSSL;
      

  16.   

    我现想把Indy恢复到delphi自带的,怎么办呢?
      

  17.   

    而且我还是请教那两个DLL如何编译。
      

  18.   

    我测试过,没有MSVCR90.dll照样可以使用我才发出去的。9.8的需要Indy10.1.6
      

  19.   

    还有请教一下Indy到底如何安装?
    D2007的Lib\indy10这个目录该怎么处理?
      

  20.   

    不是又发了一个,之前给你的DLL,我当然知道需要msvcr90.dll,只是没有该DLL并不影响使用,所以就没理会这个DLL了。
      

  21.   

    我上面列出来的几个配置当中,先把原来的Indy相关的目录删除掉,然后再配置为你现有的目录。注意包含子目录。
      

  22.   

    但是我无法使用啊。可能是Indy的问题?
      

  23.   

    "Lbrary Path"和"Browsing Path"当中加上";D:\Working\Components\indy10.2.5\Lib\System;D:\Working\Components\indy10.2.5\Lib\Core;D:\Working\Components\indy10.2.5\Lib\Protocols"(具体替换为你自己的目录)"Debug DCU Path"当中删除Indy相关目录
      

  24.   

    问题解决了。我用的Indy10.1.5和unsigned大哥编译的9.8M的DLL。谢谢unsigned!长知识了!
      

  25.   

    先加入这个单元: IdSSLOpenSSLHeaders;然后在你的get或者post前面,加入是如下语句:IdSSLOpenSSLHeaders.Load;
    idhttp1.Readtimeout := 0;你再试试吧。
      

  26.   

    兄弟们,我请求一Delphi问题。
    IdHTTP下载文件时,我用的是:
    IdHTTP.Get(URL, SMTream);
    URL为:'https://cim.ubssecurities.com//download/C30001/2011Q3_Report_C30001.pdf'注意,此处前缀为https,就不能下载,请问用什么方法解决?