我正在使用Delphi 2007和Indy 10来发布https帖子请求,我正在使用httpbin
进行测试,但它不起作用......它正在提升:
First chance exception at $77503E28. Exception class EIdOSSLCouldNotLoadSSLLibrary with message 'Could not load SSL library.'. Process Recarga.exe (21392)
这是我的代码:
unit UMAIN;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdHttp, IdMultipartFormData, IdSSLOpenSSL;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
const
URL = 'https://httpbin.org/post';
var
idHttp: TIdHTTP;
data: TIdMultiPartFormDataStream;
retorno: string;
LHandler: TIdSSLIOHandlerSocketOpenSSL;
begin
idHttp:= TIdHTTP.Create(nil);
data := TIdMultiPartFormDataStream.Create;
LHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
with LHandler do
begin
SSLOptions.Method := sslvSSLv2;
SSLOptions.Mode := sslmUnassigned;
SSLOptions.VerifyMode := [];
SSLOptions.VerifyDepth := 0;
host := '';
end;
data.AddFormField('serv', 'atualizar');
try
try
idHttp.IOHandler := LHandler;
idHttp.Request.Accept := 'text/html, */*';
idHttp.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0';
idHttp.Request.ContentType := 'application/x-www-form-urlencoded';
idHttp.HandleRedirects := True;
retorno := UTF8Decode(idHttp.Post(URL, data));
ShowMessage('Resultado: ' + retorno);
except on E: Exception do
ShowMessage('Erro: ' + E.Message);
end;
finally
LHandler.Free;
idHttp.Free;
end;
end;
end.
我在SO和其他网站上阅读了我需要 libeay32.dll 和 ssleay32.dll 库但我确实拥有它们并且位于我所在的同一目录中最后的exe,没有任何作用,正如我上面所说。怎么了?这是一个错误吗?
答案 0 :(得分:1)
我必须在上班前测试很多dll,根据this回答我需要一个特定版本的dll。经过努力和测试所有openssl版本provided by Indy后,9.6 one为我工作。