web-dev-qa-db-fra.com

Comment utiliser un proxy HTTP en Java

J'écris un code qui se connecte à des sites Web et vérifie certains codes, comme un robot. Mais je dois me connecter via un proxy et changer l'adresse IP (afin de ne pas afficher l'adresse IP du client dans les journaux du serveur). 

Comment cela peut-il être fait via Java? 

22
Tim

Vous pouvez utiliser les propriétés système Java pour configurer un proxy ou le transmettre en tant qu'options de ligne de commande. 

Vous pouvez trouver quelques détails et des échantillons ici .

Ex: Avant d'ouvrir la connexion

System.setProperty("http.proxyHost", "myProxyServer.com");
System.setProperty("http.proxyPort", "80");

Ou vous pouvez utiliser les proxies réseau par défaut configurés dans le système

System.setProperty("Java.net.useSystemProxies", "true");

Depuis Java 1.5, vous pouvez créer une instance de proxy et la transmettre à la méthode openConnection().

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("123.0.0.1", 8080));
URL url = new URL("http://www.yahoo.com");
HttpURLConnection uc = (HttpURLConnection)url.openConnection(proxy);
uc.connect();

Ou comme lisak suggéré, vous pouvez utiliser certaines bibliothèques tierces qui répondent mieux à vos besoins.

46
Arun P Johny

Ou vous pouvez également utiliser HttpClient qui conviendrait mieux à vos besoins. Consultez la documentation, c'est bref et très instructif.

DefaultHttpClient httpclient = new DefaultHttpClient();

HttpHost proxy = new HttpHost("someproxy", 8080);
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
10
lisak
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("123.0.0.1", 8080));
URL url = new URL("http://www.yahoo.com");
HttpURLConnection uc = (HttpURLConnection)url.openConnection(proxy);
uc.connect();

Cela a fonctionné pour moi. J'ai pu utiliser le proxy pour la connexion ou le transfert spécifique. Auparavant, nous utilisions System.setProperty qui permettait de le définir au niveau du système et toutes les requêtes internes/externes ont commencé à utiliser le même proxy.

Proxy.Type.HTTP fonctionne également pour http et https. 

0
Shashank