Istzustand
Laptop 1, win10/64, Lararus 2.0.12
Programm mit dem Issue kompiliert einwandfrei und läuft
Laptop 2, win10/64 Lazarus 2.2.0
Programm mit dem Issue kompliert einwandfrei, läuft aber nicht.
Es geht um eine Stelle, wo über den TFPHTTPClient via Post über https daten übertragen werden sollen.
Aufbau ist folgendermassen:
Code: Alles auswählen
tGenericPost= class (tObject)
Host : rIPConnect;
eInterface: tXmlrpcInterface;
Client : TFPHTTPClient;
PostBegin : string;
public
constructor Create (IPConnect: rIPConnect);
destructor Destroy; override;
procedure DefinateHeader; virtual;
function Post (Const PostText: string; var Response: String; TimeOut: integer): boolean;
property HostAdress: string read Host.IP;
end;
der constructor sieht so aus: Client wird hier angelegt
Code: Alles auswählen
constructor tGenericPost.Create (IPConnect: rIPConnect);
begin
inherited Create;
Host:= IPConnect;
if IPConnect.Password<>'' then Host.IP:= 'https://'+IPConnect.IP
else Host.IP:= 'http://'+IPConnect.IP;
Client:= TFPHTTPClient.Create(nil);
DefinateHeader;
end;
Code: Alles auswählen
function tGenericPost.Post (Const PostText: string; Var response: String; TimeOut: integer): boolean;
begin
client.RequestBody := TStringStream.Create(UTF8ToWinCP (PostBegin+PostText));
result:= true;
try
try
Client.IOTimeout:= TimeOut;
Response:= Client.Post(Host.IP); //(Client.Post(Host.CCUHostString));
except
on E:Exception do
begin
result:= false;
end;
end;
finally
Client.RequestBody.free;
end;
end;
Es ergaben sich folgende Test und Ergebnisreihen:
Gleiches Programm (Sources von Laptop1 (2.0.12) auf Laptop 2 (2.2.0) portiert.
1.
compiliert auf Laptop 1 unter 2.0.12: exe läuft auf beiden Laptops
2.
compiliert auf Laptop2 unter 2.2.0: läuft nicht in der Entwicklungsumgebung (s.o. Exception), auch nicht nur als exe aufruf. Das compilierte exe 2.2.0 läuft auf Laptop 1 auch nicht.
Hierbei hatte ich auch noch diverse Versionen der beiden dlls probiert, immer das gleiche negative Ergebnis.
3.
Source auf Laptop2 unter 2.2.0 geändert, das dies nun kein https sondern http Post wird. Läuft sauber unter 2.2.0 , exe läuft auch Stand alone.
Frage ist nun, was, warum ist anders, dass der gleiche Source, der seit 1.8.x läuft, unter 2.2.0 bei einem https post nun ins Nirvana rennt. ?
(die passenden DDLs für den OPenSSL waren jeweils in dem Directory, in dem sich auch die EXE befindet)
Thnx, A.