Un cuadro de lista puede mostrar cien proxys mientras TIdHTTP sigue usando el mismo. Seleccionar una fila cambia la interfaz; la siguiente petición cambia de ruta solo después de que el punto final seleccionado llega a la configuración del cliente HTTP.

Para descargas HTTP públicas, las entradas de la lista de proxys HTTP pueden aportar puntos finales candidatos. Mantenga un host y un puerto entero detrás de cada entrada mostrada. Cuando se acepte la selección, aplique ambos antes de iniciar la descarga:

IdHTTP1.ProxyParams.ProxyServer := ChosenHost;
IdHTTP1.ProxyParams.ProxyPort := ChosenPort;
Page := IdHTTP1.Get(TargetURL);

Este fragmento supone un cliente inactivo, un punto final validado y las variables existentes de la aplicación. La URL de destino sigue siendo el sitio web. El campo de host del proxy recibe un host, no la URL del sitio web ni una etiqueta de visualización.

Una selección necesita tres resultados posibles

  • Una selección de proxy válida aporta un host y un puerto del 1 al 65535.
  • Una opción Direct explícita borra el host del proxy para la siguiente petición.
  • Una selección no válida o ausente deja intacta la configuración actual y pide al usuario que la corrija.

Mantener esos resultados separados evita que una fila deseleccionada envíe inesperadamente la siguiente petición de forma directa. Desactive el botón de petición mientras una nueva selección esté incompleta.

Si los puntos finales llegan como texto, analícelos y valídelos antes de cambiar cualquiera de las dos propiedades. TryStrToInt permite que la interfaz informe de un puerto incorrecto sin una excepción de conversión no capturada. Dividir por los primeros dos puntos solo es adecuado para un formato de host o IPv4 deliberadamente restringido: un literal IPv6 contiene sus propios dos puntos. Un campo de host y un campo de puerto separados simplifican la representación almacenada.

No deje que un clic de la interfaz modifique un cliente que un trabajador ya está usando. Aplique la selección entre operaciones, o dé a cada operación concurrente su propio cliente configurado. El selector controla las conexiones futuras; no puede mover una transferencia establecida a otra salida.

Artículos relacionados