AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi System.Net.HTTPClientComponent
Thema durchsuchen
Ansicht
Themen-Optionen

System.Net.HTTPClientComponent

Ein Thema von Detlev · begonnen am 16. Dez 2022 · letzter Beitrag vom 9. Feb 2023
Antwort Antwort
Detlev

Registriert seit: 16. Nov 2014
Ort: Hamburg
46 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

System.Net.HTTPClientComponent

  Alt 16. Dez 2022, 15:25
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:
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;
SpeedNETGet2Click crasht bei https mit ENetHTTPCertificateException "Serverzertifikat ungültig oder nicht vorhanden", aber funktioniert mit normalen http-Seiten.

Was mache ich falsch?

Unterstützt die Komponenten überhaupt https?
Detlev

Geändert von Detlev (16. Dez 2022 um 15:50 Uhr)
  Mit Zitat antworten Zitat
Detlev

Registriert seit: 16. Nov 2014
Ort: Hamburg
46 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: System.Net.HTTPClientComponent

  Alt 16. Dez 2022, 15:47
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;
Detlev

Geändert von Detlev (16. Dez 2022 um 15:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.044 Beiträge
 
Delphi 12 Athens
 
#3

AW: System.Net.HTTPClientComponent

  Alt 16. Dez 2022, 15:53
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Detlev

Registriert seit: 16. Nov 2014
Ort: Hamburg
46 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: System.Net.HTTPClientComponent

  Alt 16. Dez 2022, 16:03
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.
Detlev
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.044 Beiträge
 
Delphi 12 Athens
 
#5

AW: System.Net.HTTPClientComponent

  Alt 16. Dez 2022, 16:31
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;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Detlev

Registriert seit: 16. Nov 2014
Ort: Hamburg
46 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: System.Net.HTTPClientComponent

  Alt 16. Dez 2022, 16:43
Bei dir läuft das?! Das ist ja verdammt seltsam. Bei mir wirft es den Zertifikatsfehler.
Detlev
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz