AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Delphi und https - TIdHTTP vs. THttpClient
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi und https - TIdHTTP vs. THttpClient

Ein Thema von Gausi · begonnen am 24. Apr 2019 · letzter Beitrag vom 3. Mai 2019
Antwort Antwort
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
878 Beiträge
 
Delphi 11 Alexandria
 
#1

Delphi und https - TIdHTTP vs. THttpClient

  Alt 24. Apr 2019, 13:43
Da die Beteiligung "drüben" in der EE etwas mau ist, frage ich hier nochmal nach ...

In meinem mp3-Player parse ich für die Suche nach Liedtexten eine Webseite. Das ist mal wieder "kaputt". Zum einen wurde der Quelltext der Seite geändert (d.h. ich muss das parsen des html-Codes anpassen), zum anderen wurde die Seite komplett von http auf https umgestellt. Jetzt muss ich also gucken, wie ich da am besten Zugriff kriege.

Möglichkeit 1: Weiter mit Indy, einem IOHandler, und die OpenSSL-Libraries mitliefern. Findet man ja genug Code-Beispiele, und habe ich auch schon mal woanders so genutzt.

Möglichkeit 2: THttpClient aus den neuen Delphi-Versionen nutzen (System.Net.URLClient, System.Net.HttpClient). Dabei werden wohl die bei Windows mitgelieferten Bibliotheken dafür genutzt. Macht ggf. unter nicht voll gepatchten Windows-7 Probleme, aber das bekommt man in den Griff, wenn man explizit die neueren Protokolle setzt, was unter W7 per Default nicht gemacht wird, also
HttpClient.SecureProtocols := [THTTPSecureProtocol.TLS12, THTTPSecureProtocol.TLS11]; Zusätzlich gibt es da noch einen anderen Bug in Tokyo, der bei bestimmten URLs (anscheinend bei URL-kodierten Umlauten in der URL?) eine Exception schmeißt, was aber in Rio behoben ist. Das ist wohl noch nicht so ganz ausgereift ...

Da ich unerfahren auf dem Gebiet bin - gibt es da irgendwo noch versteckte Fallstricke? Oder was sind die Vor- und Nachteile der beiden Varianten? Generell muss ich da auch etwas mehr im Code umbauen, da z.B. bei einem 404 Indy eine Exception wirft, der HttpClient aber nicht ...

So wie ich das sehe, muss ich bei (1) zusätzliche Dateien ausliefern, und muss mich ggf. um das patchen kümmern, wenn es da Sicherheitsprobleme gibt. Bei (2) schiebe ich das komplett auf das Betriebssystem, muss dann aber mindestens Windows 7 (?) voraussetzen. Beides sind ja keine besonders dicken Einschränkungen - ich würde aktuell (2) vorziehen. Was meint ihr?

(Crosspost Entwickler-Ecke)
The angels have the phone box.
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
655 Beiträge
 
Delphi 12 Athens
 
#2

AW: Delphi und https - TIdHTTP vs. THttpClient

  Alt 24. Apr 2019, 15:22
Also, ich war sehr froh, dass die ganzen REST-Bibliotheken von Delphi auch auf die "neuen" Http-Bibliotheken setzen und ich mich somit, was https angeht, auf das Betriebssystem verlassen kann. Da veraltete OpenSSL-Bibliotheken ja doch schon mal ein echtes Sicherheitsproblem sein können (klar, kommt immer noch drauf an, was genau man macht), war ich sehr froh, nicht permanent einen Blick auf aktuelle Versionen/Patches haben zu müssen.

Insofern bin ich ziemlich klar für Variante 2. Wobei ich es auch okay finde, mindestens ein aktuelles Windows 7 vorauszusetzen für einen PC, mit dem offensichtlich ja auch ins Netz gegangen werden soll.
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
485 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Delphi und https - TIdHTTP vs. THttpClient

  Alt 25. Apr 2019, 18:49
Sehe ich genau so.
Die 2. Variante ist moderner und verwendet das jeweilige Betriebssystem, was in der Regel zu bevorzugen ist.
EInziges Problem, es fehlen noch einige Dinge wie viele der MIME-Typen, die musst du dir aktuell noch selbst beschaffen. Das Problem bei System.Net ist halt, du musst derzeit noch sehr gut wissen, wie es funktioniert und das trotz der mehr als kargen Dokumentation, die es hat (nämlich leider fast keine).
Dafür wird es aber, im Gegensatz zu Indy, noch aktiv weiterentwickelt und unterstützt auch neuere Features.
Dennis
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
878 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Delphi und https - TIdHTTP vs. THttpClient

  Alt 2. Mai 2019, 10:52
Ok, danke für die Bestätigung meines Bauchgefühls.

Ein paar Stellen im Code waren etwas blöd beim Umbau - hauptsächlich Probleme mit der Kodierung (UTF8, URL-Kodierung, etc.), aber jetzt scheint alles zu laufen.
Einziges Problem, es fehlen noch einige Dinge wie viele der MIME-Typen, die musst du dir aktuell noch selbst beschaffen.
Das ist kein Problem bei mir. Ich brauche nur html/xml-Code und Bilder - und bei letzteren gehe ich einfach nach dem Dateinamen im Link. Das funktioniert bei der Quelle sehr gut.
The angels have the phone box.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Delphi und https - TIdHTTP vs. THttpClient

  Alt 2. Mai 2019, 12:36
Dafür wird es aber, im Gegensatz zu Indy, noch aktiv weiterentwickelt und unterstützt auch neuere Features.
Indy wird immer noch aktiv weiterentwickelt, für Serveranwendungen und andere Protokolle als HTTP(S) ist es immer noch eine erstklassige Bibliothek. Nur der noch fehlende TLS 1.3 Support könnte früher oder später ein Problem darstellen. Client- und/oder Server-Anwendungen, die zur Zeit noch auf TLS 1.2 laufen, könnten irgendwann vor verschlossenen Türen stehen, wenn TLS 1.3 zur Pflicht wird.
Michael Justin
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.087 Beiträge
 
Delphi 12 Athens
 
#6

AW: Delphi und https - TIdHTTP vs. THttpClient

  Alt 2. Mai 2019, 14:04
Die Frage stellt sich mir auch jedes Mal, und ich tendiere auch zur 2ten Version (wg. SSL).

Ich kenne jetzt die interne Struktur von Indy nicht besonders, aber dessen High-Level Protokolle sind immer noch Top.
Wäre es nicht einfach möglich die unterste Hardware-Ebene auf dieselbe Basis wie die neue Net-Library zu stellen, und im API weiter oben bleibt alles wie gehabt (nur ohne die unsäglichen SSL-Libraries mitzuschleifen) ?
Evtl. gibt es ja schon einen Mechanismus um die Hardware nahen Level einfach auszutauschen ?

Das wäre so ungefähr meine Wunschvorstellung dazu, leider müsste das wohl von AtoZed oder sonst jemand der sich dazu berufen fühlt in Angriff genommen werden
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.939 Beiträge
 
Delphi 12 Athens
 
#7

AW: Delphi und https - TIdHTTP vs. THttpClient

  Alt 2. Mai 2019, 18:09
@mjustin: unterstützt Windows schon TLS 1.3? Als ich vor einigen Wochen versucht habe das herauszufinden, hab ich's leider nicht geschafft das rauszufinden.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.939 Beiträge
 
Delphi 12 Athens
 
#8

AW: Delphi und https - TIdHTTP vs. THttpClient

  Alt 2. Mai 2019, 18:12
Noch eine gute Alternative: ICS Komponenten von overbyte.eu
Open source, kann SSL und ist kompatibel zu den aktuellen OpenSLL DLLs.
Außerdem gibt es einen extra Forumsbereich dazu auf dem Delphipraxis Server

https://en.delphipraxis.net/forum/37...mponent-suite/
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#9

AW: Delphi und https - TIdHTTP vs. THttpClient

  Alt 3. Mai 2019, 08:51
@mjustin: unterstützt Windows schon TLS 1.3? Als ich vor einigen Wochen versucht habe das herauszufinden, hab ich's leider nicht geschafft das rauszufinden.
Windows (Clients und Server) unterstützen TLS 1.3 noch nicht. Allerdings ist Indy nicht nur unter Windows einsetzbar, d.h. die Entwicklung für Linux Distributionen mit TLS 1.3 Unterstützung wären betroffen. TLS 1.2 soll aber auch noch für einige Jahre nicht 'deprecated' werden (mindestens bis nach 2024):

Zitat:
"Und TLS 1.2 soll aus heutiger NIST-Sicht (siehe Punkt 4.1 in https://csrc.nist.gov/publications/d...52/rev-2/draft) mit 1.3 koexistieren und nicht von ihm abgelöst werden - sogar noch nach 2024."
(https://social.technet.microsoft.com...ndows_Serverde)
Michael Justin
  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 00:38 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