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.