Anvend en valgt proxy på Delphis TIdHTTP-klient
Forbind et Delphi-listevalg med TIdHTTP-proxykonfiguration, med validerede slutpunktsværdier og en eksplicit direkte valgmulighed.
En listeboks kan vise hundrede proxyer, mens TIdHTTP fortsætter med at bruge den samme. Valg af en række ændrer grænsefladen; den næste anmodning skifter kun rute, når det valgte slutpunkt når HTTP-klientens konfiguration.
Til offentlige HTTP-downloads kan poster fra HTTP-proxylisten levere kandidatslutpunkter. Hold en vært og en heltalsport bag hver vist post. Når valget accepteres, skal du anvende begge, før downloadet starter:
IdHTTP1.ProxyParams.ProxyServer := ChosenHost;
IdHTTP1.ProxyParams.ProxyPort := ChosenPort;
Page := IdHTTP1.Get(TargetURL);
Dette uddrag forudsætter en ledig klient, et valideret slutpunkt og programmets eksisterende variabler. Mål-URL'en forbliver webstedet. Proxyens værtfelt tager en vært, ikke webstedets URL eller en visningsetikette.
Et valg kræver tre mulige udfald
- Et gyldigt proxyvalg leverer en vært og en port fra 1 til 65535.
- Et eksplicit Direct-valg rydder proxyens vært for den næste anmodning.
- Et ugyldigt eller manglende valg lader den aktuelle konfiguration være intakt og beder brugeren rette den.
At holde disse udfald adskilt forhindrer, at en fravalgt række uventet sender den næste anmodning direkte. Deaktiver anmodningsknappen, mens et nyt valg er ufuldstændigt.
Hvis slutpunkter ankommer som tekst, skal du parse og validere dem, før du ændrer nogen af de to egenskaber. TryStrToInt lader grænsefladen rapportere en dårlig port uden en ufanget konverteringsundtagelse. Opdeling ved det første kolon er kun egnet til et bevidst begrænset værtsnavn-eller-IPv4-format: en IPv6-literal indeholder sine egne koloner. Et separat værtfelt og portfelt gør den lagrede repræsentation enklere.
Tillad ikke, at et UI-klik ændrer en klient, som en arbejdstråd allerede bruger. Anvend valget mellem operationer, eller giv hver samtidig operation sin egen konfigurerede klient. Vælgeren styrer fremtidige forbindelser; den kan ikke flytte en etableret overførsel til en anden udgang.