it-swarm.com.de

Wie verwende ich bei HttpURLConnection einen Proxy?

Wenn ich das mache ...

conn = new URL(urlString).openConnection();
System.out.println("Proxy? " + conn.usingProxy());

es druckt

Proxy? false

Das Problem ist, ich bin hinter einem Proxy. Woher bezieht die JVM ihre Proxy-Informationen unter Windows? Wie richte ich das ein? Alle meine anderen Apps scheinen mit meinem Proxy vollkommen zufrieden zu sein.

123
izb

Seit Java 1.5 können Sie auch eine Java.net.Proxy -Instanz an die openConnection(proxy) -Methode übergeben:

//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 Ihr Proxy eine Authentifizierung erfordert, erhalten Sie die Antwort 407.

In diesem Fall benötigen Sie den folgenden Code:

    Authenticator authenticator = new Authenticator() {

        public PasswordAuthentication getPasswordAuthentication() {
            return (new PasswordAuthentication("user",
                    "password".toCharArray()));
        }
    };
    Authenticator.setDefault(authenticator);
315
NickDK

Dies ist ziemlich einfach aus dem Internet zu beantworten. Stellen Sie die Systemeigenschaften http.proxyHost Und http.proxyPort Ein. Sie können dies mit System.setProperty() oder über die Befehlszeile mit der Syntax -D Tun.

32
Sean Owen

Proxys werden über zwei Systemeigenschaften unterstützt: http.proxyHost und http.proxyPort. Sie müssen auf den Proxy-Server bzw. den Port eingestellt sein. Das folgende grundlegende Beispiel veranschaulicht dies:

String url = "http://www.google.com/",
       proxy = "proxy.mydomain.com",
       port = "8080";
URL server = new URL(url);
Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost",proxy);
systemProperties.setProperty("http.proxyPort",port);
HttpURLConnection connection = (HttpURLConnection)server.openConnection();
connection.connect();
InputStream in = connection.getInputStream();
readResponse(in);
19
Pascal Thivent

Legen Sie Folgendes fest, bevor Sie openConnection öffnen.

System.setProperty("http.proxyHost", "Host");
System.setProperty("http.proxyPort", "port_number");

Wenn der Proxy eine Authentifizierung erfordert,

System.setProperty("http.proxyUser", "user");
System.setProperty("http.proxyPassword", "password");
10
ZZ Coder

Sie können auch einstellen

-Djava.net.useSystemProxies=true

Unter Windows und Linux werden die Systemeinstellungen verwendet, sodass Sie sich nicht wiederholen müssen (DRY).

http://docs.Oracle.com/javase/7/docs/api/Java/net/doc-files/net-properties.html#Proxies

Für Java 1.8 und höher müssen Sie -Djdk.http.auth.tunneling.disabledSchemes=, um Proxys mit Basic Authorization für https zu erstellen.

5
Anton

Die genehmigte Antwort funktioniert ... wenn Sie Ihren Proxy-Host und Port kennen =). Falls Sie jedoch nach dem Proxy-Host und dem Port suchen, sollten die folgenden Schritte hilfreich sein

wenn ein automatisch konfigurierter Proxy angegeben wird: dann

1> IE öffnen (oder einen beliebigen Browser)

2> URL-Adresse von Ihrem Browser über IE-> Extras-> Internetoption-> Verbindungen-> LAN-Einstellungen-> Adresse abrufen und URL eingeben, z. B .: als http://autocache.abc.com/ und geben Sie ein, eine Datei wird im .pac-Format heruntergeladen und auf dem Desktop gespeichert

3> PAC-Datei im Textpad öffnen, PROXY identifizieren:

In Ihrem Editor wird es ungefähr so ​​aussehen:

return "PROXY web-proxy.ind.abc.com:8080; PROXY proxy.sgp.abc.com:8080";

ein dickes Lob von Maven in 5 Minuten funktioniert nicht

Sobald Sie den Host und den Port haben, schauen Sie einfach hier rein und schon können Sie loslegen

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("web-proxy.ind.abc.com", 8080));
        URLConnection connection = new URL(url).openConnection(proxy);
2
Norbert