HttpURLConnection.usingProxy() 연결 전과 후
usingProxy를 핸들러 상태로 읽어야 합니다. 연결이 수립되기 전 OpenJDK 25의 명시적 프록시 동작도 포함합니다.
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 구현이 동일한 연결 전 세부 정보를 제공할 필요는 없습니다.
프록시가 어떻게 선택되었고 플래그를 언제 읽었는지 기록하십시오. 목적지가 보는 출발지 주소를 확인하려면 목적지 측 증거를 보존해야 합니다. 불리언 프록시 표시에는 그 출구 주소를 담을 필드가 없습니다.