Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se proporciona información general sobre cómo configurar el SDK de Azure para Java para usar correctamente los servidores proxy.
Configuración del proxy HTTP
Las bibliotecas cliente de Azure para Java ofrecen varias formas de configurar un proxy para un HttpClient
.
Cada método de suministro de un proxy tiene sus propias ventajas y desventajas y proporciona diferentes niveles de encapsulación. Cuando haya configurado un proxy para una instancia de HttpClient
, lo usará durante toda su vigencia. Tener el proxy asociado a un individuo HttpClient
permite a una aplicación usar varias HttpClient
instancias en las que cada una puede usar un proxy diferente para cumplir los requisitos de proxy de una aplicación.
Las opciones de configuración del proxy son:
Uso de un proxy de entorno
De forma predeterminada, los generadores de cliente HTTP inspeccionarán el entorno de las configuraciones de proxy. Este proceso usa las API de Azure SDK para Java Configuration
. Cuando el generador crea un cliente, se configura con una copia de la "configuración global" recuperada llamando a Configuration.getGlobalConfiguration()
. Esta llamada leerá cualquier configuración de proxy HTTP del entorno del sistema.
Cuando el generador inspecciona el entorno, buscará las siguientes configuraciones de entorno en el orden especificado:
HTTPS_PROXY
HTTP_PROXY
https.proxy*
http.proxy*
*
representa las propiedades conocidas del proxy de Java. Para obtener más información, consulte Redes y servidores proxy de Java en la documentación de Oracle.
Si el generador encuentra cualquiera de las configuraciones de entorno, crea una ProxyOptions
instancia llamando a ProxyOptions.fromConfiguration(Configuration.getGlobalConfiguration())
. En este artículo se proporcionan más detalles a continuación sobre el ProxyOptions
tipo.
Importante
Para usar cualquier configuración de proxy, Java requiere que establezca la propiedad java.net.useSystemProxies
del entorno del sistema en true
.
También puede crear una instancia de cliente HTTP que no use ninguna configuración de proxy presente en las variables de entorno del sistema. Para invalidar el comportamiento predeterminado, establezca explícitamente una configuración Configuration
diferente en el generador de clientes HTTP. Al establecer un Configuration
en el constructor, ya no llamará a Configuration.getGlobalConfiguration()
. Por ejemplo, si llama a configuration(Configuration)
mediante Configuration.NONE
, puede impedir explícitamente que el generador inspeccione la configuración del entorno.
En el ejemplo siguiente se usa la HTTP_PROXY
variable de entorno con el valor localhost:8888
para usar Fiddler como proxy. En este código se muestra cómo crear un cliente HTTP De Netty y OkHttp. (Para obtener más información sobre la configuración del cliente HTTP, consulte Clientes HTTP y canalizaciones).
export HTTP_PROXY=localhost:8888
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder().build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder().build();
Para evitar que se use el proxy de entorno, configure el generador de clientes HTTP con Configuration.NONE
, como se muestra en el ejemplo siguiente:
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
.configuration(Configuration.NONE)
.build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
.configuration(Configuration.NONE)
.build();
Uso de un proxy de configuración
En lugar de leer del entorno, puede configurar generadores de clientes HTTP para que utilicen un valor de Configuration
personalizado con la misma configuración de proxy que ya se aceptó del entorno. Esta configuración ofrece la capacidad de tener configuraciones reutilizables que tienen como ámbito un caso de uso limitado. Cuando el generador de clientes HTTP está compilando HttpClient
, usará el ProxyOptions
devuelto desde ProxyOptions.fromConfiguration(<Configuration passed into the builder>)
.
En el ejemplo siguiente se emplean las configuraciones de http.proxy*
establecidas en un objeto Configuration
para usar un proxy que autentique Fiddler como proxy.
Configuration configuration = new Configuration()
.put("java.net.useSystemProxies", "true")
.put("http.proxyHost", "localhost")
.put("http.proxyPort", "8888")
.put("http.proxyUser", "1")
.put("http.proxyPassword", "1");
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
.configuration(configuration)
.build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
.configuration(configuration)
.build();
Uso de un proxy explícito
Las bibliotecas cliente de Java se envían con una ProxyOptions
clase que actúa como tipo de bibliotecas cliente de Azure para configurar un proxy. Puede configurar ProxyOptions
con el protocolo de red que se usa para enviar solicitudes de proxy, la dirección de proxy, las credenciales de autenticación de proxy y los hosts que no son de proxy. Solo se requieren el protocolo de red proxy y la dirección de proxy. Al usar credenciales de autenticación, debe establecer el nombre de usuario y la contraseña.
En el ejemplo siguiente se crea una instancia sencilla ProxyOptions
que actúa como proxy para solicitudes dirigidas a la dirección predeterminada de Fiddler (localhost:8888
):
ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("localhost", 8888));
En el ejemplo siguiente se crea un ProxyOptions
autenticado que actúa como proxy de solicitudes hacia una instancia de Fiddler que requiere autenticación de proxy.
// Fiddler uses username "1" and password "1" with basic authentication as its proxy authentication requirement.
ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("localhost", 8888))
.setCredentials("1", "1");
Puede configurar generadores de clientes HTTP con ProxyOptions
directamente para indicar un proxy explícito que se va a usar. Esta configuración es la manera más granular de proporcionar un proxy, y, por lo general, no es tan flexible como pasar un elemento Configuration
que puedas modificar para actualizar los requisitos de proxy.
En el ejemplo siguiente se usa ProxyOptions
para usar Fiddler como proxy:
ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("localhost", 8888));
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
.proxy(proxyOptions)
.build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
.proxy(proxyOptions)
.build();
Pasos siguientes
Ahora que está familiarizado con la configuración de proxy en El SDK de Azure para Java, consulte Configuración del seguimiento en Azure SDK para Java para comprender mejor los flujos de la aplicación y para ayudar a diagnosticar problemas.