![]() |
System.Net.HTTPClientComponent
Ich nutze Delphi 10.2 Tokyo und versuche gerade, einfache Methoden für den Zugriff über https:// zu finden.
System.Net.HTTPClientComponent war mir bisher unbekannt. Ich habe hier zwei Versuche, die beide nicht funktionieren. Die Dokumentation ist dazu furchtbar dürftig.
Delphi-Quellcode:
SpeedNETGet2Click crasht bei https mit ENetHTTPCertificateException "Serverzertifikat ungültig oder nicht vorhanden", aber funktioniert mit normalen http-Seiten.
procedure TForm1.SpeedNETGet2Click(Sender: TObject);
var AHTTPClient : TNetHTTPClient; AResponseStream : TMemoryStream; begin AHTTPClient := TNetHTTPClient.Create(nil); AResponseStream := TMemoryStream.Create; MemoGetSSL2.Text := AHTTPClient.Get('https://de.wikipedia.org/wiki/Wikipedia:Hauptseite', AResponseStream).ContentAsString; AResponseStream.Free; AHTTPClient.Free; end; Was mache ich falsch? Unterstützt die Komponenten überhaupt https? |
AW: System.Net.HTTPClientComponent
Habe die Originalfrage gekürzt auf das verbliebende Unwissen. Habe gerade herausgefunden, dass man THTTPRequest mit einem THTTPClient verbinden muss. Dann frage ich mich aber: Was soll das? Hat jemand darauf eine Antwort, warum man dann nicht gleich den HTTPClient verwendet, sondern umständlich einen HTTPRequest verbindet?!
Wie auch immer, https funktioniert so nicht, http aber schon. Die zentrale Frage bleibt also.
Delphi-Quellcode:
procedure TForm1.SpeedNETGetClick(Sender: TObject);
var AHTTPRequest : TNetHTTPRequest; AHTTPClient : TNetHTTPClient; AResponseStream : TMemoryStream; AString : String; begin AHTTPClient := TNetHTTPClient.Create(nil); AHTTPRequest := TNetHTTPRequest.Create(nil); AHTTPRequest.Client := AHTTPClient; AResponseStream := TMemoryStream.Create; MemoGetSSL2.Text := AHTTPRequest.Get('http://squarenmr.com', AResponseStream).ContentAsString; AResonseStream.Free; AHTTPRequest.Free; AHTTPClient.Free; |
AW: System.Net.HTTPClientComponent
Für einen simplen Abruf einer Seite kann man natürlich gleich den Client verwenden. In der Regel sind die Anforderungen aber deutlich komplexer und lassen sich mit einem Client und mehreren Requests flexibler gestalten.
|
AW: System.Net.HTTPClientComponent
OK, danke. Habe inzwischen herausgefunden, dass die TNEThttpClient-Sache als Komponente auf einem Formular gedacht sind und man ebenso gut auch THTTPClient direkt verwenden kann, ohne Komponenten-Wrapper. Das war mir vorher nicht klar.
Trotzdem bleibt die entscheidende Frage, wie man ggf. https zum Laufen bekommt. |
AW: System.Net.HTTPClientComponent
Also hier läuft das ohne Probleme (mit einfacherer Lösung für Stream zu String):
Delphi-Quellcode:
var
AHTTPClient : TNetHTTPClient; AResponseStream : TStringStream; AString : String; begin AHTTPClient := TNetHTTPClient.Create(nil); try AResponseStream := TStringStream.Create; try AHTTPClient.Get('https://de.wikipedia.org/wiki/Wikipedia:Hauptseite', AResponseStream); AString := AResponseStream.DataString; finally AResponseStream.Free; end; finally AHTTPClient.Free; end; Memo1.Text := AString; end; |
AW: System.Net.HTTPClientComponent
Bei dir läuft das?! Das ist ja verdammt seltsam. Bei mir wirft es den Zertifikatsfehler.
|
AW: System.Net.HTTPClientComponent
Kannst du denn die URL im Browser aufrufen? Auch in verschiedenen?
|
AW: System.Net.HTTPClientComponent
Zitat:
Manche Browser wie z.B. Firefox verwenden einen eigenen Zertifikatsspeicher, daher kann damit ein Verbindungsaufbau funktionieren der mit einem anderen Browser nicht funktioniert (und umgekehrt). System.Net.HTTPClient hat anscheinend eine Property in der Informationen zu fehlgeschlagenem Verbindungsaufbau stehen können: SecureFailureReasons ![]() Eventuell steht darin etwas Hilfreiches. (Quelle: ![]() |
AW: System.Net.HTTPClientComponent
Zitat:
|
AW: System.Net.HTTPClientComponent
Oder an den am Ende verwendeten Windows-Funktionen.
Aber an Delphi liegt es ja offenbar nicht, sonst würde es ja bei mir auch nicht funktionieren. Ich habe es extra auch mit 10.2 versucht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz