¿Cómo hago que HttpURLConnection use un proxy?

Si hago esto …

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

imprime

 Proxy? false 

El problema es que estoy detrás de un proxy. ¿De dónde obtiene la JVM su información de proxy en Windows? ¿Cómo configuro esto? Todas mis otras aplicaciones parecen perfectamente felices con mi proxy.

Desde java 1.5 también puede pasar una instancia java.net.Proxy al método openConnection(proxy) :

 //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 su proxy requiere autenticación, le dará la respuesta 407.

En este caso necesitarás el siguiente código:

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

Esto es bastante fácil de responder desde internet. Establezca las propiedades del sistema http.proxyHost y http.proxyPort . Puede hacer esto con System.setProperty() , o desde la línea de comando con la syntax -D .

Los proxies son compatibles a través de dos propiedades del sistema: http.proxyHost y http.proxyPort. Deben configurarse en el servidor proxy y el puerto, respectivamente. El siguiente ejemplo básico lo ilustra:

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

Establezca lo siguiente antes de abrir openConnection,

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

Si el proxy requiere autenticación,

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

También puedes configurar

 -Djava.net.useSystemProxies=true 

En Windows y Linux, esto utilizará la configuración del sistema para que no tenga que repetirse (DRY)

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

Para Java 1.8 y superior, debe establecer -Djdk.http.auth.tunneling.disabledSchemes= para realizar proxies con Autorización básica que funcione con https.

La respuesta aprobada funcionará … si conoce su servidor proxy y puerto =). Pero en caso de que esté buscando el host y el puerto proxy, los pasos a continuación deberían ayudar

si se proporciona el proxy autoconfigurado: entonces

1> abrir IE (o cualquier navegador)

2> obtenga la dirección url de su navegador a través de IE-> Herramientas-> opción de Internet-> conexiones-> Configuración de LAN-> obtenga la dirección y entregue la url, por ejemplo: como http://autocache.abc.com/ e ingrese, una el archivo se descargará con el formato .pac, guardar en el escritorio

3> abra el archivo .pac en el teclado, identifique PROXY:

En tu editor, vendrá algo así como:

devolver “PROXY web-proxy.ind.abc.com:8080; PROXY proxy.sgp.abc.com:8080”;

Felicitaciones a bekur de maven en 5 min que no funciona

Una vez que tenga el host y el puerto, simplemente haga clic aquí y listo.

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