How to use an HTTP proxy in java
Solution 1
You can use the java system properties to set up a proxy or pass it as command line options.
You can find some details and samples here.
Ex: Before opening the connection
System.setProperty("http.proxyHost", "myProxyServer.com");
System.setProperty("http.proxyPort", "80");
Or you can use the default network proxies configured in the sytem
System.setProperty("java.net.useSystemProxies", "true");
Since Java 1.5 you can create a instance of proxy and pass it to the openConnection()
method.
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();
Or as lisak suggested, you can use some 3rd party libraries which supports your need better.
Solution 2
Or you can also use HttpClient which would suit your needs better. Check out the documentation, it's brief and very informative.
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpHost proxy = new HttpHost("someproxy", 8080);
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
Related videos on Youtube
Tim
Updated on July 09, 2022Comments
-
Tim almost 2 years
I am writing a code that connects to websites and checks some code, like a crawler. But I need to connect trough a proxy and change the IP address (so it doesn't show the client's IP in the server logs).
How can this be done through java?
-
stevebot over 13 yearshmm you sound like your up to something good.
-
-
talawahtech over 9 yearsYou should also note that the proxy configuration for HTTPS uses a slightly different property eg. System.setProperty("https.proxyHost", "myProxyServer.com");. I was wondering why this wasn't working for me at first and it was because my code uses HTTPS.
-
Stefan over 9 yearsWhy is there no Proxy.Type.HTTPS (secure) constant at all?
-
David Lakatos over 9 yearsTutorial here: link