Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem mit HTTP2-Protokoll mit THTTPClient (https://www.delphipraxis.net/209915-problem-mit-http2-protokoll-mit-thttpclient.html)

HighBaer 7. Feb 2022 10:11

Problem mit HTTP2-Protokoll mit THTTPClient
 
ich versuche in Delphi 11 mit "THTTPClient" der Unit "System.Net.HttpClient" das HTTP2-Protokoll zu verwenden:
Code:
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.
  • Muss noch irgendwas zusätzlich angegeben werden?
  • Ist der Aufruf so eventuell falsch?
  • Ist möglicher Weise (wenn auch unwahrscheilich) die Net-Komponente fehlerhaft?

Ich gehe ohne Proxy ins Internet!

Schon mal vielen Dank für Tipps!

Schöne Grüße aus Köln ...

TurboMagic 7. Feb 2022 21:01

AW: Problem mit HTTP2-Protokoll mit THTTPClient
 
Vermutlich kann man im Request/Header irgendwo angeben welche HTTP Version man will/kann.

KodeZwerg 7. Feb 2022 21:53

AW: Problem mit HTTP2-Protokoll mit THTTPClient
 
Mir steht nur Delphi Rio zur Verfügung, es sieht so aus als ob nur bis http 1.1 support integriert wurde.
Also kein Fehler deines Quelltextes sondern eher die Embarcadero WinAPI Umsetzung.
Entweder selbst einen Wrapper basteln oder die Sources direkt modifizieren. (getestet über TWinHTTPClient und TWinHTTPClient.DoExecuteRequest müsste dafür verantwortlich sein)

HighBaer 9. Feb 2022 10:14

AW: Problem mit HTTP2-Protokoll mit THTTPClient
 
Vielen Dank für die Antworten.

@TurboMagic:
Zitat:

Vermutlich kann man im Request/Header irgendwo angeben welche HTTP Version man will/kann.
Ich dachte, genau das würde die Angabe "NetClient.ProtocolVersion := THTTPProtocolVersion.HTTP_2_0;" bewirken.

@KodeZwerg:
Ich habe mir die Routinen mal genauer angesehen und im Debuger ausführen lassen. Das sieht aber (soweit ich das beurteilen kann) korrekt aus. Letztlich wird für die Angabe des Protokolls die Windows-Routine "WinHttpSetOption" mit den korrekten Parametern aufgerufen, sofern da die Dokumentation von Microsoft korrekt ist, von dem wohl auszugehen ist. Auch der eigentliche Request wird in einer Windows-Routine durchgeführt. Ich habe so das Gefühl, dass da noch irgendwas anderes eingestellt werden muss.

Schöne Grüße aus Köln ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:10 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