unit Unit2;
{$mode ObjFPC}{$H+}
interface
uses
Classes, SysUtils, fphttpclient, ssockets, httpdefs, uriparser, strutils;
type
TFPExHTTPClient = Class(TFPCustomHTTPClient)
private
FUnixSocketPath: string;
FSocket : TSocketStream;
FIOTimeout: Integer;
FConnectTimeout: Integer;
Public
Property UnixSocketPath: string Read FUnixSocketPath Write FUnixSocketPath;
Procedure ConnectToServer(const AHost: String; APort: Integer; UseSSL : Boolean=False); override;
end;
implementation
procedure TFPExHTTPClient.ConnectToServer(const AHost: String;
APort: Integer; UseSSL : Boolean = False);
Var
G : TSocketHandler;
begin
If IsConnected Then
DisconnectFromServer; // avoid memory leaks
if (Aport=0) then
if UseSSL then
Aport:=443
else
Aport:=80;
G:=GetSocketHandler(UseSSL);
if FUnixSocketPath = '' then
FSocket:=TInetSocket.Create(AHost,APort,G)
else
WriteLn(FUnixSocketPath);
FSocket:=TUnixSocket.Create(FUnixSocketPath);
try
if FIOTimeout<>0 then
FSocket.IOTimeout:=FIOTimeout;
if FConnectTimeout<>0 then
FSocket.ConnectTimeout:=FConnectTimeout;
// if TypeOf(FSocket) is TInetSocket then
// FSocket.Connect;
except
FreeAndNil(FSocket);
Raise;
end;
end;
end.