Uma caixa de lista pode mostrar cem proxies enquanto o TIdHTTP continua a usar o mesmo. Selecionar uma linha altera a interface; o pedido seguinte só muda de rota depois de o endpoint escolhido chegar à configuração do cliente HTTP.

Para downloads HTTP públicos, as entradas da lista de proxies HTTP podem fornecer endpoints candidatos. Mantenha um host e uma porta inteira por trás de cada entrada apresentada. Quando a seleção é aceite, aplique ambos antes de iniciar o download:

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

Este fragmento pressupõe um cliente inativo, um endpoint validado e as variáveis existentes da aplicação. O URL de destino continua a ser o site. O campo de host do proxy recebe um host, não o URL do site nem uma etiqueta de apresentação.

Uma seleção precisa de três resultados possíveis

  • Uma seleção de proxy válida fornece um host e uma porta de 1 a 65535.
  • Uma opção Direct explícita limpa o host do proxy para o pedido seguinte.
  • Uma seleção inválida ou ausente deixa a configuração atual intacta e pede ao utilizador que a corrija.

Manter estes resultados separados impede que uma linha desselecionada envie inesperadamente o pedido seguinte em direto. Desative o botão de pedido enquanto uma nova escolha estiver incompleta.

Se os endpoints chegarem como texto, analise-os e valide-os antes de alterar qualquer das duas propriedades. O TryStrToInt permite que a interface comunique uma porta inválida sem uma exceção de conversão não capturada. Dividir nos primeiros dois pontos só é adequado para um formato de nome de host ou IPv4 deliberadamente restrito: um literal IPv6 contém os seus próprios dois pontos. Campos separados de host e de porta simplificam a representação armazenada.

Não deixe que um clique na interface modifique um cliente que um trabalhador já está a usar. Aplique a escolha entre operações, ou dê a cada operação concorrente o seu próprio cliente configurado. O seletor controla ligações futuras; não pode mover uma transferência estabelecida para outra saída.

Artigos relacionados