java - example - ¿Cómo hago que HttpURLConnection use un proxy?
set proxy java (7)
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);
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");
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 sintaxis -D
.
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);
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);
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.
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