Question Comment puis-je utiliser HttpURLConnection pour utiliser un proxy?


Si je fais ça ...

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

il imprime

Proxy? false

Le problème est que je suis derrière un proxy. Où la JVM obtient-elle ses informations de proxy sous Windows? Comment puis-je configurer cela? Toutes mes autres applications semblent parfaitement heureuses avec mon proxy.


105
2017-09-16 13:28


origine


Réponses:


Depuis java 1.5, vous pouvez aussi passer un java.net.Proxy par exemple à la openConnection(proxy) méthode:

//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 une réponse 407.

Dans ce cas, vous aurez besoin du code suivant:

    Authenticator authenticator = new Authenticator() {

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

278
2017-09-16 14:23



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


31
2017-09-16 13:31



Les proxy sont pris en charge via deux propriétés système: http.proxyHost et http.proxyPort. Ils doivent être définis sur le serveur proxy et le port respectivement. L'exemple de base 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);

17
2017-09-16 13:34



Définissez comme suit avant d'ouvrir la connexion,

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

10
2017-09-16 13:32



Vous pouvez également définir

-Djava.net.useSystemProxies=true

Sous Windows et Linux, cela utilisera les paramètres du système afin de ne pas avoir à vous répéter (DRY)

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


9
2017-08-10 17:21



Pour Java 1.8 et versions ultérieures, vous devez définir -Djdk.http.auth.tunneling.disabledSchemes= faire des proxy avec l'autorisation de base fonctionnant avec https.


3
2018-04-06 18:57



La réponse approuvée fonctionnera ... si vous connaissez votre hôte proxy et votre port =). Mais si vous recherchez l'hôte proxy et le port, les étapes ci-dessous devraient vous aider.

si le proxy configuré automatiquement est donné: alors

1> ouvrir IE (ou n'importe quel navigateur)

2> obtenir l'adresse URL de votre navigateur via IE-> Tools-> internet   option-> connections-> Paramètres LAN-> obtenir l'adresse et donner l'url par exemple: as    http://autocache.abc.com/ et entrez, un fichier sera téléchargé avec   format .pac, enregistrer sur le bureau

3> ouvrir le fichier .pac dans le pavé de texte, identifier PROXY:

Dans votre éditeur, il y aura quelque chose comme:

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

félicitations à bekur de Maven dans 5 min ne fonctionne pas

Une fois que vous avez l'hôte et le port, entrez dans ce que vous avez à faire

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

2
2018-06-10 21:56