[РЕШЕНО]Ошибка инициализации SSL в TFPHTTPClient в потоке
Добавлено: 04.04.2018 16:16:57
Добрый день.
Столкнулся с такой проблемой.
Имеется класс наследник от TThread в нем происходит обращение к https узлу.
В основном теле создаю несколько потоков в которых идет обращения на https узлы.
Когда поток один то все работает замечательно, когда запускаю одновременно несколько потоков то первый поток запускается успешно а в последующих возникает ошибка
Вот простейший код который воспроизводит эту ошибку.
Что я делаю не так и как победить?
Спасибо.
Столкнулся с такой проблемой.
Имеется класс наследник от TThread в нем происходит обращение к https узлу.
В основном теле создаю несколько потоков в которых идет обращения на https узлы.
Когда поток один то все работает замечательно, когда запускаю одновременно несколько потоков то первый поток запускается успешно а в последующих возникает ошибка
Project project1 raised exception class 'EInOutError' with message:
Could not initialize OpenSSL library
Вот простейший код который воспроизводит эту ошибку.
- Код: Выделить всё
program project1;
uses
unit1;
var
MYThread: array[0..2] of TMyHTTPRequest;
i: integer;
begin
for i := 0 to 2 do
begin
MYThread[i] := TMyHTTPRequest.Create(True);
MYThread[i].FreeOnTerminate := True;
MYThread[i].Start;
end;
ReadLn;
end.
- Код: Выделить всё
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, fphttpclient, sslsockets, fpopenssl;
type
{ TMyHTTPRequest }
TMyHTTPRequest = class(TThread)
public
procedure Execute; override;
end;
implementation
{ TMyHTTPRequest }
procedure TMyHTTPRequest.Execute;
var
Client: TFPHTTPClient;
res: string;
begin
Client := TFPHTTPClient.Create(nil);
res := Client.Get('https://google.com');
FreeAndNil(Client);
end;
end.
Что я делаю не так и как победить?
Спасибо.