Beim Versuch festzustellen, ob eine HttpURLConnection einen Proxy verwendet, kann der folgende Code fälschlicherweise „false“ zurückgeben:
conn = new URL(urlString).openConnection(); System.out.println("Proxy? " + conn.usingProxy());
Dieses Verhalten tritt auf, obwohl die Verbindung über einen Proxyserver besteht. Die Java Virtual Machine (JVM) ruft Proxy-Informationen normalerweise aus den Betriebssystemeinstellungen ab. Allerdings ist es unter bestimmten Umständen möglich, dass die JVM die Proxy-Konfiguration nicht kennt.
Um sicherzustellen, dass HttpURLConnection den entsprechenden Proxy verwendet, ist eine explizite Angabe erforderlich die Proxy-Informationen. Dies kann erreicht werden, indem eine Proxy-Instanz erstellt und an die openConnection(proxy)-Methode übergeben wird:
//Proxy instance, proxy ip = 10.0.0.1 with port 8080 Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("10.0.0.1", 8080)); conn = new URL(urlString).openConnection(proxy);
Wenn der Proxy eine Authentifizierung erfordert, antwortet die HttpURLConnection mit einem Antwortcode 407. Um dieses Problem zu beheben, kann ein Authenticator wie folgt konfiguriert werden:
Authenticator authenticator = new Authenticator() { public PasswordAuthentication getPasswordAuthentication() { return (new PasswordAuthentication("user", "password".toCharArray())); } }; Authenticator.setDefault(authenticator);
Das obige ist der detaillierte Inhalt vonWie kann sichergestellt werden, dass HttpURLConnection einen Proxy verwendet und die Authentifizierung übernimmt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!