160 votes

Comment puis-je faire HttpURLConnection utiliser un proxy?

Si je fais cela...

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

il imprime

Proxy? false

Le problème c'est que je suis derrière un proxy. D'où la JVM obtenir ses informations de proxy à partir de Windows? Comment puis-je le configurer? Toutes mes autres applications semblent parfaitement heureux avec mon proxy.

379voto

NickDK Points 1561

Depuis java 1.5, vous pouvez également passer une java.net.Proxy exemple de la méthode openConnection ():

//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);

Si votre proxy requiert une authentification, il vous donnera la réponse 407.

Dans ce cas, vous devrez utiliser le code suivant:

    Authenticator authenticator = new Authenticator() {

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

37voto

Sean Owen Points 36577

C'est assez facile de répondre à partir de l'internet. Définir les propriétés système http.proxyHost et http.proxyPort. Vous pouvez faire cela avec System.setProperty(), ou à partir de la ligne de commande avec l' -D de la syntaxe.

23voto

Pascal Thivent Points 295221

Les procurations sont pris en charge par le biais de deux propriétés système: http.proxyHost et http.proxyPort. Elles doivent être définies sur le serveur proxy et le port, respectivement. L'exemple simple suivant l'illustre:

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);

10voto

ZZ Coder Points 36990

Définir des points suivants avant de vous openConnection,

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

Si proxy nécessite une authentification,

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

7voto

javabeangrinder Points 1494

Méfiez-vous de la configuration globale du Système proxyHost et proxyPort throuch Système.setProperty lors de l'exécution de votre application dans un Serveur d'Application. Le paramètre de proxy va influencer toutes les autres applications en cours d'exécution dans la même Machine Virtuelle Java.

L'approche par NickDK ci-dessus, c'est mon choix.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X