Ein ausgewähltes Proxy auf Delphis TIdHTTP-Client anwenden
Verbinden Sie eine Delphi-Listenauswahl mit der TIdHTTP-Proxykonfiguration, mit validierten Endpunktwerten und einer ausdrücklichen Direkt-Option.
Ein Listenfeld kann hundert Proxys anzeigen, während TIdHTTP weiter denselben verwendet. Das Auswählen einer Zeile ändert die Oberfläche; die nächste Anforderung wechselt die Route erst, nachdem der ausgewählte Endpunkt in die Konfiguration des HTTP-Clients gelangt ist.
Für öffentliche HTTP-Downloads können Einträge aus der HTTP-Proxy-Liste Kandidaten-Endpunkte liefern. Halten Sie hinter jedem angezeigten Eintrag einen Host und einen ganzzahligen Port bereit. Wird die Auswahl übernommen, wenden Sie beides vor dem Start des Downloads an:
IdHTTP1.ProxyParams.ProxyServer := ChosenHost;
IdHTTP1.ProxyParams.ProxyPort := ChosenPort;
Page := IdHTTP1.Get(TargetURL);
Dieses Fragment setzt einen ruhenden Client, einen validierten Endpunkt und die vorhandenen Variablen der Anwendung voraus. Die Ziel-URL bleibt die Website. Das Proxy-Hostfeld nimmt einen Host auf, nicht die Website-URL und keine Anzeigebezeichnung.
Eine Auswahl braucht drei mögliche Ergebnisse
- Eine gültige Proxy-Auswahl liefert einen Host und einen Port von 1 bis 65535.
- Eine ausdrückliche Direkt-Auswahl leert den Proxy-Host für die nächste Anforderung.
- Eine ungültige oder fehlende Auswahl lässt die aktuelle Konfiguration unverändert und fordert den Benutzer zur Korrektur auf.
Diese Ergebnisse getrennt zu halten verhindert, dass eine abgewählte Zeile die nächste Anforderung unerwartet direkt sendet. Deaktivieren Sie die Anforderungsschaltfläche, solange eine neue Auswahl unvollständig ist.
Kommen Endpunkte als Text, parsen und validieren Sie sie, bevor Sie eine der beiden Eigenschaften ändern. TryStrToInt erlaubt der Oberfläche, einen schlechten Port ohne unbehandelte Konvertierungsausnahme zu melden. Das Aufteilen am ersten Doppelpunkt eignet sich nur für ein bewusst eingeschränktes Hostname-oder-IPv4-Format: ein IPv6-Literal enthält eigene Doppelpunkte. Ein getrenntes Hostfeld und Portfeld vereinfachen die gespeicherte Darstellung.
Lassen Sie nicht zu, dass ein UI-Klick einen Client verändert, den ein Worker bereits nutzt. Wenden Sie die Auswahl zwischen Vorgängen an, oder geben Sie jedem parallelen Vorgang einen eigenen konfigurierten Client. Die Auswahl steuert künftige Verbindungen; sie kann eine bestehende Übertragung nicht auf einen anderen Ausgang verlagern.