HttpURLConnection.usingProxy() înainte și după conectare
Citiți usingProxy ca stare a handlerului, inclusiv comportamentul cu proxy explicit din OpenJDK 25 înainte de stabilirea conexiunii.
HttpURLConnection expune usingProxy, dar rezultatul are nevoie alături de implementarea și starea conexiunii. Nu este o cerere de test.
În handlerul HTTP din OpenJDK 25, un proxy HTTP configurat explicit poate face metoda să returneze true înainte de deschiderea conexiunii de rețea:
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();Un candidat HTTP din lista de proxyuri HTTP poate completa gazda și portul pentru o cerere publică permisă fără autentificare proxy. openConnection construiește obiectul. Nu stabilește conexiunea HTTP doar returnând acel obiect. Așadar indicatorul din acest caz de proxy explicit nu dovedește că intermediarul este accesibil sau acceptă cererea.
Cu selecție automată, alegerea rutei poate avea loc mai târziu, când handlerul se conectează. Un rezultat false timpuriu nu trebuie tratat ca decizie finală de rută. După conectare, interpretați starea împreună cu orice excepție sau răspuns, mai ales când au fost implicate autentificarea sau o rută de rezervă.
Metoda publică aparține HttpURLConnection, în timp ce comportamentul de mai sus este specific handlerului OpenJDK menționat. Un alt furnizor sau o altă implementare JDK nu trebuie să expună aceleași detalii dinaintea conectării.
Notați cum a fost ales proxyul și când a fost citit indicatorul. Pentru a stabili adresa sursă văzută de destinație, păstrați dovezi din partea destinației; un marcaj boolean de proxy nu are câmp pentru acea adresă de ieșire.