java - restaurar - variables de entorno linux
Sin cambiar el código, cómo forzar a httpClient a usar proxy por variables de entorno o argumentos JVM (5)
¿Esto ayuda?
System.setProperty("https.proxyHost", proxy_host);
System.setProperty("http.proxyHost", proxy_host);
System.setProperty("https.proxyPort", proxy_port);
System.setProperty("http.proxyPort", proxy_port);
O, por supuesto, puede pasar las mismas propiedades a través de la línea de comandos
Encontré que la configuración de http.proxyHost y http.proxyPort no sirve para httpClient. ¿Cómo obligar a httpClient a usar proxy por variables de entorno o argumentos de VM o algo así sin cambiar el código?
AFAIK, no puede administrar esto sin cambios de código, pero puede acercarse al comportamiento nativo utilizando su propio administrador de conexión. Ver ProxySelector cambia el esquema de URL de https: // a socket: //
El cliente HTTP (v 4.5.1 para mi caso) puede usar el proxy del sistema de esta manera:
HttpClient httpClient = HttpClientBuilder.create().useSystemProperties().build();
//or
HttpClient httpClient = HttpClients.createSystem();
en https://issues.apache.org/jira/browse/HTTPCLIENT-1128
SystemDefaultHttpClient fue agregado a ver. 4.2
puede forzar el proxy a HttpClient
por sí mismo con el client.getHostConfiguration().setProxy(host, port)
. Por lo general, creo una clase de envoltorio alrededor de HttpClient
y al inicializar este proxy de configuración de clase I desde cualquier fuente (variables de env. ...).
java.net.ProxySelector.setDefault(new MyProxySelector())
en una situación en la que no se puede establecer un proxy directamente en HttpClient
. Debe implementar su propia clase de ProxySelector y la selección del método hace la selección de proxy según el URI solicitado. Puede hacer url-> mapeo de proxy para configurar una dirección URI particular para el proxy requerido o devolver un proxy para todo el URI solicitado globalmente.
Como puedo ver en el código fuente de HttpClient, no hay otra manera de configurar el método setProxy solo proxy. Estoy usando commons-httpclient-3.1.