TsgcHTTP1Client ist eine nicht-visuelle Komponente, die von der Indy-Komponente TIdHTTP erbt und einige neue Eigenschaften hinzufügt.
Diese Komponente befindet sich in der Unit sgcHTTP.
Ermöglicht es Ihnen zu konfigurieren, wie eine Verbindung zu sicheren SSL/TLS-Servern über das HTTP/1-Protokoll hergestellt wird.
ALPNProtocols: Liste der ALPN-Protokolle, die an den Server gesendet werden.
RootCertFile: Pfad zur Root-Zertifikatdatei.
CertFile: Pfad zur Zertifikatsdatei.
KeyFile: Pfad zur Zertifikatsschlüsseldatei.
Password: wenn das Zertifikat mit einem Passwort gesichert ist, geben Sie es hier ein.
VerifyCertificate: wenn das Zertifikat verifiziert werden muss, aktivieren Sie diese Eigenschaft. Verwenden Sie das Ereignis OnSSLVerifyPeer , um die SSL-Verifizierung anzupassen.
VerifyDepth: ist eine Integer-Eigenschaft, die die maximale Anzahl von Verknüpfungen darstellt, die zulässig sind, wenn die Überprüfung für das X.509-Zertifikat durchgeführt wird.
Version: verwendet standardmäßig TLS 1.0. Wenn der Server eine höhere TLS-Version erfordert, kann sie hier ausgewählt werden.
Proxy: hier können Sie definieren, ob Sie sich über einen Proxy-Server verbinden möchten; Sie können sich mit den folgenden Proxy-Servern verbinden:
pxyHTTP: HTTP-Proxy-Server.
pxySocks4: SOCKS4-Proxy-Server.
pxySocks4A: SOCKS4A-Proxy-Server.
pxySocks5: SOCKS5-Proxy-Server.
IOHandler: wählen Sie aus, welche Bibliothek Sie zur Verbindung über TLS verwenden.
iohOpenSSL: verwendet die OpenSSL-Bibliothek und ist der Standard für Indy-Komponenten. Erfordert das Bereitstellen von OpenSSL-Bibliotheken für win32/win64.
iohSChannel: verwendet Secure Channel, ein von Microsoft für Windows implementiertes Sicherheitsprotokoll. Es erfordert nicht die Bereitstellung von OpenSSL-Bibliotheken. Funktioniert nur unter Windows 32/64 Bit.
OpenSSL_Options: Konfiguration der OpenSSL-Bibliotheken.
APIVersion: ermöglicht die Definition, welche OpenSSL-API verwendet wird.
oslAPI_1_0: verwendet API 1.0 OpenSSL, es ist die neueste von Indy unterstützte
oslAPI_1_1: verwendet API-1.1-OpenSSL, erfordert unsere benutzerdefinierte Indy-Bibliothek und ermöglicht die Verwendung von OpenSSL-1.1.1-Bibliotheken (mit TLS-1.3-Unterstützung).
oslAPI_3_0: verwendet API 3.0 OpenSSL, erfordert unsere benutzerdefinierte Indy-Bibliothek und ermöglicht die Verwendung von OpenSSL-3.0.0-Bibliotheken (mit TLS-1.3-Unterstützung).
LibPath: hier können Sie konfigurieren, wo sich die OpenSSL-Bibliotheken befinden
oslpNone: dies ist der Standard. Die OpenSSL-Bibliotheken sollten sich im selben Ordner wie die Binärdatei oder in einem bekannten Pfad befinden.
oslpDefaultFolder: setzt automatisch den OpenSSL-Pfad, in dem sich die Bibliotheken für alle IDE-Personalities befinden sollen.
oslpCustomFolder: wenn dies die ausgewählte Option ist, definieren Sie den vollständigen Pfad in der Eigenschaft LibPathCustom.
LibPathCustom: wenn LibPath = oslpCustomFolder ist, definieren Sie hier den vollständigen Pfad, in dem sich die OpenSSL-Bibliotheken befinden.
UnixSymLinks: aktiviert oder deaktiviert das Laden von SymLinks unter Unix-Systemen (standardmäßig aktiviert, außer unter OSX64):
oslsSymLinksDefault: Standardmäßig sind Symlinks aktiviert, außer unter OSX64 (macOS Monterey und neuer schlagen beim Versuch fehl, die Bibliothek ohne Version zu laden).
oslsSymLinksLoadFirst: lädt zuerst Symlinks, bevor versucht wird, die versionierten Bibliotheken zu laden.
oslsSymLinksLoad: lädt Symlinks, nachdem versucht wurde, die versionierten Bibliotheken zu laden.
oslsSymLinksDontLoad: lädt die SymLinks nicht.
MinVersion: Legen Sie hier die Mindestversion fest, die der Client zum Verbinden mit einem sicheren Server verwendet. Standardmäßig ist der Wert tlsUndefined, was bedeutet, dass die Mindestversion dieselbe ist, die in der Eigenschaft Version festgelegt wurde. Beispiel: Wenn Sie möchten, dass der Client nur über TLS 1.2 oder TLS 1.3 verbindet, legen Sie die folgenden Werte fest.
SSLOptions.Version := tls1_3;
SSLOptions.OpenSSL_Options.MinVersion := tls1_2;
X509Checks: verwenden Sie diese Eigenschaft, um zusätzliche X509-Zertifikatsvalidierungen zu aktivieren:
Mode: wählt aus, welche Optionen validiert werden
oslx509chHostName: verifiziert das Hostnamen-Zertifikat.
oslx509chIPAddress: verifiziert die IP-Adresse des Zertifikats.
HostName: setzt den Hostnamen, wenn er sich von der Anfrage unterscheidet.
IPAddress: legen Sie die IP-Adresse fest, falls sie von der Anfrage abweicht.
SChannel_Options: ermöglicht die Verwendung eines Zertifikats aus dem Windows-Zertifikatspeicher.
CertHash: ist der Zertifikats-Hash. Sie können den Zertifikats-Hash finden, indem Sie einen dir-Befehl in PowerShell ausführen.
CipherList: hier können Sie festlegen, welche Cipher verwendet werden (getrennt durch ":"). Beispiel: CALG_AES_256:CALG_AES_128
CertStoreName: der Speichername, in dem das Zertifikat abgelegt ist. Wählen Sie einen der folgenden aus:
scsnMY (der Standardwert)
scsnCA
scsnRoot
scsnTrust
CertStorePath: der Speicherpfad, in dem das Zertifikat abgelegt ist. Wählen Sie einen der folgenden:
scspStoreCurrentUser (der Standard)
scspStoreLocalMachine
Wenn die Eigenschaft Log aktiviert ist, werden Socket-Nachrichten in einer angegebenen Protokolldatei gespeichert, was beim Debuggen nützlich ist.
LogOptions.FileName: vollständiger Pfad zum Dateinamen.
Ermöglicht die Authentifizierung mit OAuth2 oder JWT.
Standardmäßig verwendet der HTTP1Client blockierende Anfragen, sodass der Client nach dem Aufruf einer HTTP-Anfragemethode auf die Antwort vom Server wartet. Alternativ können Sie asynchrone Methoden verwenden, um diese HTTP-Anfragen in einem sekundären Thread auszuführen, wodurch das Blockieren des Threads, in dem die Anfrage aufgerufen wird, vermieden wird. Die folgenden asynchronen Methoden sind implementiert:
Nach dem Aufruf dieser Methoden fährt der Code, anstatt auf die Antwort zu warten, mit der nächsten Zeile fort, und die Antwort kann mit dem Ereignis OnAsyncResponse behandelt werden.
procedure OnAsyncResultEvent(Sender: TObject; const aRequest:
TsgcHTTPAsyncRequest; const aResponse: TIdHTTPResponse);
Wenn beim Verarbeiten der asynchronen Anforderung ein Fehler auftritt, wird die Ausnahme im Ereignis OnAsyncException ausgelöst.
Fordern Sie eine GET-Methode an einen HTTPs-Server an und verwenden Sie TLS 1.2
oHTTP := TsgcHTTP1Client.Create(nil);
Try
oHTTP.TLSOptions.Version := tls1_2;
ShowMessage(oHTTP.Get('https://www.google.es'));
Finally
oHTTP.Free;
End;
Fordert eine GET-Methode an einen HTTPS-Server unter Verwendung von openSSL 1.1 und TLS 1.3 an
oHTTP := TsgcHTTP1Client.Create(nil);
Try
oHTTP.TLSOptions.OpenSSL_Options.APIVersion := oslAPI_1_1;
oHTTP.TLSOptions.Version := tls1_3;
ShowMessage(oHTTP.Get('https://www.google.es'));
Finally
oHTTP.Free;
End;
Fordern Sie eine asynchrone POST-Methode an und lesen Sie die Antwort mit dem OnAsyncResultEvent.
procedure OnAsyncExceptionEvent(Sender: TObject; const aThread:
TsgcThread; const E: Exception);
begin
Log(E.Message);
end;
procedure OnAsyncResultEvent(Sender: TObject; const aRequest:
TsgcHTTPAsyncRequest; const aResponse: TIdHTTPResponse);
begin
if aResponse.ResponseCode = 200 then
Log('ok', aRequest.Response)
else
Log('error', aRequest.Response);
end;
oHTTP := TsgcHTTP1Client.Create(nil);
oHTTP.OnAsyncResult := OnAsyncResultEvent;
oHTTP.OnAsyncException := OnAsyncResultEvent;
oRequest := TStringStream.Create('body');
oResponse := TStringStream.Create('');
oHTTP.PostAsync('https://localhost/test', oRequest, oResponse);
Fordert eine GET-Methode an einen HTTPS-Server an, unter Verwendung von SChannel für Windows.
oHTTP := TsgcHTTP1Client.Create(nil);
Try
oHTTP.TLSOptions.IOHandler := iohSChannel;
oHTTP.TLSOptions.Version := tls1_2;
ShowMessage(oHTTP.Get('https://www.google.es'));
Finally
oHTTP.Free;
End;
Fordern Sie die SSE-Methode an, um Datenereignisse zu erhalten
oHTTP := TsgcHTTP1Client.Create(nil);
oHTTP.OnSSEMessage := OnSSEMessageEvent;
oHTTP.GetSSE('https://www.yoursite.com/sse');
procedure OnSSEMessageEvent(Sender: TObject; const aMessage: string; var Cancel: Boolean);
begin
ShowMessage(aMessage);
end;
OnSSEMessage
Das Ereignis wird aufgerufen, wenn eine neue SSE-Nachricht empfangen wird.
OnSSLVerifyPeer
Wenn die Zertifikatsprüfung aktiviert ist, können Sie in diesem Ereignis überprüfen und entscheiden, ob das Server-Zertifikat akzeptiert werden soll.
OnSSLGetHandler
Dieses Ereignis wird ausgelöst, bevor der SSL-Handler erstellt wird. Sie können hier Ihren eigenen SSL-Handler erstellen (er muss von TIdServerIOHandlerSSLBase oder TIdIOHandlerSSLBase erben) und die erforderlichen Eigenschaften festlegen.
OnSSLAfterCreateHandler
Wenn kein benutzerdefiniertes SSL-Objekt erstellt wurde, wird mit dem OpenSSL-Handler ein Standardobjekt erstellt. Sie können auf die Eigenschaften des SSL-Handlers zugreifen und sie bei Bedarf ändern.
OnAsyncResult
Das Ereignis wird nach dem Anfordern einer Async-Methode (mit GetAsync-, PutAsync-... Methoden) aufgerufen. Verwenden Sie den Parameter Response, um das Ergebnis der Anfrage zu erfahren.
OnAsyncException
Wenn beim Verarbeiten einer asynchronen Anfrage ein Fehler auftritt, wird dieses Ereignis mit der ausgelösten Ausnahme aufgerufen.