목록 상자에 프록시 100개를 표시해도 TIdHTTP는 계속 같은 하나를 사용합니다. 행을 선택하면 인터페이스는 바뀌지만, 다음 요청의 경로는 선택한 엔드포인트가 HTTP 클라이언트의 구성에 도달한 뒤에야 바뀝니다.

공개 HTTP 다운로드에서는 HTTP 프록시 목록의 항목이 후보 엔드포인트를 제공할 수 있습니다. 표시되는 각 항목 뒤에 호스트와 정수 포트를 보관하십시오. 선택이 승인되면 다운로드를 시작하기 전에 둘 다 적용합니다:

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

이 단편은 유휴 클라이언트, 검증된 엔드포인트, 애플리케이션의 기존 변수를 전제로 합니다. 대상 URL은 그대로 웹사이트입니다. 프록시 호스트 필드에는 호스트를 넣으며, 웹사이트 URL이나 표시 레이블을 넣지 않습니다.

선택에는 세 가지 결과가 필요합니다

  • 유효한 프록시 선택은 호스트와 1에서 65535까지의 포트를 제공합니다.
  • 명시적인 직접 선택은 다음 요청을 위해 프록시 호스트를 비웁니다.
  • 유효하지 않거나 없는 선택은 현재 구성을 그대로 두고 사용자에게 수정을 요청합니다.

이 결과들을 구분해 두면 선택이 해제된 행이 다음 요청을 예기치 않게 직접 보내는 일을 막을 수 있습니다. 새 선택이 완료되지 않는 동안에는 요청 버튼을 비활성화하십시오.

엔드포인트가 텍스트로 들어오면 두 속성 중 어느 것도 바꾸기 전에 파싱하고 검증하십시오. TryStrToInt를 쓰면 처리되지 않은 변환 예외 없이 잘못된 포트를 인터페이스에 알릴 수 있습니다. 첫 콜론에서 나누는 방식은 의도적으로 제한한 호스트 이름 또는 IPv4 형식에만 적합합니다: IPv6 리터럴은 자체 콜론을 포함합니다. 호스트 필드와 포트 필드를 분리하면 저장 표현이 단순해집니다.

UI 클릭이 작업자가 이미 사용 중인 클라이언트를 수정하게 두지 마십시오. 선택은 작업 사이에 적용하거나, 동시 작업마다 자체 구성된 클라이언트를 부여하십시오. 선택기는 향후 연결을 제어할 뿐, 이미 설정된 전송을 다른 출구로 옮길 수는 없습니다.

관련 글