Aplicarea unui proxy selectat la clientul TIdHTTP din Delphi
Conectați o selecție din lista Delphi la configurația de proxy TIdHTTP, cu valori de endpoint validate și o opțiune directă explicită.
O casetă de listă poate afișa o sută de proxy-uri în timp ce TIdHTTP continuă să folosească același. Selectarea unui rând schimbă interfața; cererea următoare schimbă ruta doar după ce endpointul selectat ajunge în configurația clientului HTTP.
Pentru descărcări HTTP publice, intrările din lista de proxy-uri HTTP pot furniza endpointuri candidate. Păstrați un host și un port întreg în spatele fiecărei intrări afișate. Când selecția este acceptată, aplicați ambele înainte de a începe descărcarea:
IdHTTP1.ProxyParams.ProxyServer := ChosenHost;
IdHTTP1.ProxyParams.ProxyPort := ChosenPort;
Page := IdHTTP1.Get(TargetURL);
Acest fragment presupune un client inactiv, un endpoint validat și variabilele existente ale aplicației. URL-ul țintă rămâne site-ul web. Câmpul de host al proxy-ului primește un host, nu URL-ul site-ului sau o etichetă de afișare.
O selecție are nevoie de trei rezultate posibile
- O selecție validă de proxy furnizează un host și un port de la 1 la 65535.
- O opțiune Direct explicită golește hostul proxy-ului pentru cererea următoare.
- O selecție invalidă sau lipsă lasă configurația curentă intactă și îi cere utilizatorului să o corecteze.
Păstrarea acestor rezultate separate împiedică un rând deselectat să trimită neașteptat cererea următoare direct. Dezactivați butonul de cerere cât timp o nouă alegere este incompletă.
Dacă endpointurile sosesc ca text, analizați-le și validați-le înainte de a modifica oricare dintre cele două proprietăți. TryStrToInt permite interfeței să raporteze un port greșit fără o excepție de conversie neprinsă. Împărțirea la primul două puncte este potrivită doar pentru un format de nume de host sau IPv4 limitat în mod deliberat: un literal IPv6 conține propriile două puncte. Câmpuri separate pentru host și port simplifică reprezentarea stocată.
Nu lăsați un clic în interfață să modifice un client pe care un worker îl folosește deja. Aplicați alegerea între operații sau acordați fiecărei operații concurente propriul client configurat. Selectorul controlează conexiunile viitoare; nu poate muta un transfer deja stabilit pe altă ieșire.