Použití vybraného proxy v klientu TIdHTTP v Delphi
Propojte výběr ze seznamu Delphi s konfigurací proxy v TIdHTTP, s ověřenými hodnotami koncového bodu a výslovnou přímou volbou.
Seznam může zobrazovat stovku proxy, zatímco TIdHTTP stále používá jednu a tutéž. Výběr řádku změní rozhraní; následující požadavek změní trasu až poté, co se vybraný koncový bod dostane do konfigurace HTTP klienta.
Pro veřejná stahování přes HTTP mohou položky ze seznamu HTTP proxy poskytnout kandidátské koncové body. Za každou zobrazenou položkou uchovávejte hostitele a celočíselný port. Když je výběr přijat, použijte obojí před zahájením stahování:
IdHTTP1.ProxyParams.ProxyServer := ChosenHost;
IdHTTP1.ProxyParams.ProxyPort := ChosenPort;
Page := IdHTTP1.Get(TargetURL);
Tento fragment předpokládá nečinného klienta, ověřený koncový bod a existující proměnné aplikace. Cílové URL zůstává webem. Pole hostitele proxy přebírá hostitele, nikoli URL webu ani zobrazovaný popisek.
Výběr potřebuje tři možné výsledky
- Platný výběr proxy dodá hostitele a port od 1 do 65535.
- Výslovná volba Direct vymaže hostitele proxy pro následující požadavek.
- Neplatný nebo chybějící výběr ponechá aktuální konfiguraci nedotčenou a požádá uživatele o opravu.
Udržování těchto výsledků odděleně brání tomu, aby odznačený řádek neočekávaně odeslal následující požadavek přímo. Dokud není nový výběr dokončen, zakažte tlačítko požadavku.
Pokud koncové body přicházejí jako text, analyzujte je a ověřte, než změníte kteroukoli z obou vlastností. TryStrToInt umožňuje rozhraní nahlásit špatný port bez nezachycené výjimky převodu. Dělení na prvním dvojtečce je vhodné jen pro záměrně omezený formát hostname-nebo-IPv4: literál IPv6 obsahuje vlastní dvojtečky. Samostatné pole hostitele a pole portu zjednodušují uloženou reprezentaci.
Nedovolte, aby kliknutí v rozhraní změnilo klienta, kterého pracovník už používá. Používejte volbu mezi operacemi, nebo dejte každé souběžné operaci její vlastní nakonfigurovaný klient. Volič řídí budoucí připojení; nemůže přesunout již navázaný přenos na jiný výstup.