HttpURLConnection은 usingProxy를 노출하지만, 결과는 연결의 구현과 상태를 함께 봐야 합니다. 이것은 테스트 요청이 아닙니다.

OpenJDK 25의 HTTP 핸들러에서는 명시적으로 구성된 HTTP 프록시가 네트워크 연결이 열리기 전에 메서드가 true를 반환하게 할 수 있습니다.

import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URI;

var proxy = new Proxy(Proxy.Type.HTTP,
    new InetSocketAddress("proxy.example", 8080));
var url = URI.create("http://example.com/").toURL();
var connection = (HttpURLConnection) url.openConnection(proxy);
boolean proxyFlag = connection.usingProxy();

HTTP 프록시 목록의 HTTP 후보는 프록시 인증 없이 허용된 공개 요청에 사용할 호스트와 포트를 채울 수 있습니다. openConnection은 객체를 생성합니다. 그 객체를 반환하는 것만으로 HTTP 연결을 수립하지는 않습니다. 따라서 이 명시적 프록시의 경우 플래그는 중개자에 도달할 수 있거나 요청을 받아들인다는 것을 증명하지 않습니다.

자동 선택에서는 핸들러가 연결할 때 경로 선택이 나중에 일어날 수 있습니다. 이른 false 결과를 최종 경로 결정으로 보아서는 안 됩니다. 연결 후에는 예외나 응답과 함께 상태를 해석하십시오. 특히 인증이나 대체 경로가 관련된 경우에 중요합니다.

이 공개 메서드는 HttpURLConnection에 속하지만, 위 동작은 언급된 OpenJDK 핸들러에만 해당합니다. 다른 공급자나 JDK 구현이 동일한 연결 전 세부 정보를 제공할 필요는 없습니다.

프록시가 어떻게 선택되었고 플래그를 언제 읽었는지 기록하십시오. 목적지가 보는 출발지 주소를 확인하려면 목적지 측 증거를 보존해야 합니다. 불리언 프록시 표시에는 그 출구 주소를 담을 필드가 없습니다.

관련 글