【发布时间】:2015-10-27 11:45:14
【问题描述】:
我正在使用 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 文件,没有我上面说的那样有效。怎么了?这是一个错误吗?
【问题讨论】:
-
做一些调试。找出为什么 DLL 没有加载。使用调试器。你有所有的代码。检查 LoadLibrary 失败时 GetLastError 返回的内容。
-
您需要升级您的极有缺陷的极旧版本的 Indy。 Delphi 2007 附带的版本是不可接受的。
-
感谢您的帮助,我会尽快更新。
-
顺便说一句,为什么这个问题如此被否决? SO不应该用作有关编程的问题和答案的数据库吗?恕我直言,作为问答数据库,它应该包含尽可能多的问题,即使其中一些被认为是旧的;在未来的某一天,这些老问题可能会非常有用。我没有看到“旧东西”here。 Downvoting是一种特权,请谨慎使用。
标签: delphi ssl delphi-2007