How to find proxy settings of a System in Java



Problem Description

How to find proxy settings of a System?

Solution

Following example shows how to find proxy settings & create a proxy connection on a system using put method of systemSetting & getResponse method of HttpURLConnection class.

import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Properties;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.ProxySelector;
import java.net.URI;

public class Main{
   public static void main(String s[]) throws Exception {
      try {
         Properties systemSettings = System.getProperties();
         systemSettings.put("proxySet", "true");
         systemSettings.put("http.proxyHost", "proxy.mycompany1.local");
         systemSettings.put("http.proxyPort", "80");
         
         URL u = new URL("http://www.google.com");
         HttpURLConnection con = (HttpURLConnection)u.openConnection();
         System.out.println(con.getResponseCode() + " : " + con.getResponseMessage());
         System.out.println(con.getResponseCode() == HttpURLConnection.HTTP_OK);
      } catch (Exception e) {
         e.printStackTrace();
         System.out.println(false);
      }
      System.setProperty("java.net.useSystemProxies", "true");
      Proxy proxy = (Proxy) ProxySelector.getDefault().select(new URI(
         "http://www.yahoo.com/")).iterator().
      next();;
      System.out.println("proxy hostname : " + proxy.type());
      InetSocketAddress addr = (InetSocketAddress)proxy.address();
      
      if (addr == null) {
         System.out.println("No Proxy");
      } else {
         System.out.println("proxy hostname : " + addr.getHostName());
         System.out.println("proxy port : " + addr.getPort());
      }
   }
}

Result

The above code sample will produce the following result.

200 : OK
true
proxy hostname : HTTP
proxy hostname : proxy.mycompany1.local
proxy port : 80

The following is an example to find proxy settings of a System ?

import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.ProxySelector;
import java.net.URI;
import java.util.Iterator;
import java.util.List;

public class NewClass {
   public static void main(String[] args) {
      try {
         System.setProperty("java.net.useSystemProxies", "true");
         List<Proxy> l = ProxySelector.getDefault().select(
            new URI("http://www.google.com/"));
         
         for (Iterator<Proxy> iter = l.iterator(); iter.hasNext();) {
            Proxy proxy = iter.next();
            System.out.println("proxy hostname : " + proxy.type());
            InetSocketAddress addr = (InetSocketAddress) proxy.address();
            
            if (addr == null) {
               System.out.println("No Proxy");
            } else {
               System.out.println("proxy hostname : " + addr.getHostName());
               System.out.println("proxy port : " + addr.getPort());
            } 
         }
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

The above code sample will produce the following result.

proxy hostname : DIRECT
No Proxy
java_networking.htm
Advertisements