Entwickler-Ecke

Internet / Netzwerk - Problem mit HTTP2-Protokoll mit THTTPClient


HighBaer - Mi 12.01.22 16:36
Titel: Problem mit HTTP2-Protokoll mit THTTPClient
Hallo Leute,

ich versuche in Delphi 11 mit "THTTPClient" der Unit "System.Net.HttpClient" das HTTP2-Protokoll zu verwenden:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var Res : integer;
var NetClient := System.Net.HttpClient.THTTPClient.Create;
try
  NetClient.ProtocolVersion := THTTPProtocolVersion.HTTP_2_0;
  var Response := NetClient.Get('https://www.google.com');
  if Response.StatusCode = 200 then begin
    case Response.Version of
      THTTPProtocolVersion.UNKNOWN_HTTP: Res := 0;
      THTTPProtocolVersion.HTTP_1_0: Res := 1;
      THTTPProtocolVersion.HTTP_1_1: Res := 2;
      THTTPProtocolVersion.HTTP_2_0: Res := 3;
    end{case}
  end{if}
finally
  NetClient.Free;
end{try .. finally}


Wenn man "https://www.google.com" z.B. bei Firefox aufruft, dann wird bei Protokoll "http2" zurückgegeben.
Bei meinem Testprogramm wird aber "HTTP_1_1" als Response.Version zurückgegeben. Also hat es scheinbar mit Http2 nicht geklappt.
Leider sind die "Net"-Komponenten recht spartanisch dokumentiert und im Internet findet man kaum etwas dazu.


  1. Muss noch irgendwas zusätzlich angegeben werden?
  2. Ist der Aufruf so eventuell falsch?
  3. Ist möglicher Weise (wenn auch unwahrscheilich) die Net-Komponente fehlerhaft?


Schon mal vielen Dank für Tipps!

Edit: Ich vergaß: Ich gehe ohne Proxy ins Internet!


Th69 - Mi 12.01.22 17:33

Hallo und :welcome:

die Komponente scheint nur HTTP 1.0 und 1.1 zu unterstützen. Vllt. hilft dir Delphi's TNetHTTPClient descendant supporting http2 [https://stackoverflow.com/questions/56505744/delphis-tnethttpclient-descendant-supporting-http2] ?


HighBaer - Do 13.01.22 11:51

Hallo Th69,

Danke für die schnelle Antwort:
Zitat:
die Komponente scheint nur HTTP 1.0 und 1.1 zu unterstützen. Vllt. hilft dir Delphi's TNetHTTPClient descendant supporting http2 [https://stackoverflow.com/questions/56505744/delphis-tnethttpclient-descendant-supporting-http2] ?


Das kannte ich schon. Hätte nur gedacht, dass in den fast drei Jahren von Delphi 10.3.1 zu Delphi 11 sich da was getan hätte. Das Http2-Protokoll ist ja auch nicht erst vor ein paar Wochen festgelegt worden. Wundert mich auch, dass es da einen Wert zum Auswählen des Http2-Protokolls gibt, wenn es dann doch nicht unterstütz wird.

Hat noch jemand einen Tipp?