Konfigurace proxy serverů v sadě Azure SDK pro Javu
Tento článek obsahuje přehled konfigurace sady Azure SDK pro Javu pro správné použití proxy serverů.
Konfigurace proxy serveru HTTP
Klientské knihovny Azure pro Javu nabízejí několik způsobů konfigurace proxy serveru pro .HttpClient
Každá metoda poskytování proxy má své vlastní výhody a nevýhody a poskytuje různé úrovně zapouzdření. Pokud jste proxy server nakonfigurovali pro server HttpClient
, použije proxy server po zbytek jeho životnosti. Když je proxy svázaný s určitou osobou HttpClient
, může aplikace používat více HttpClient
instancí, kde každý může k splnění požadavků na proxy server aplikace použít jiný proxy server.
Možnosti konfigurace proxy serveru jsou:
Použití proxy prostředí
Tvůrci klientů HTTP ve výchozím nastavení kontrolují prostředí pro konfigurace proxy serveru. Tento proces využívá sadu Azure SDK pro Configuration
rozhraní JAVA API. Když tvůrce vytvoří klienta, nakonfiguruje se kopie globální konfigurace načtená voláním Configuration.getGlobalConfiguration()
. Toto volání bude číst v jakékoli konfiguraci proxy serveru HTTP ze systémového prostředí.
Když tvůrce prostředí zkontroluje, vyhledá v uvedeném pořadí následující konfigurace prostředí:
HTTPS_PROXY
HTTP_PROXY
https.proxy*
http.proxy*
Představuje *
dobře známé vlastnosti proxy serveru Java. Další informace naleznete v tématu Sítě a proxy servery Java v dokumentaci Oracle.
Pokud tvůrce najde některou ProxyOptions
z konfigurací prostředí, vytvoří instanci voláním ProxyOptions.fromConfiguration(Configuration.getGlobalConfiguration())
. Tento článek obsahuje další podrobnosti o ProxyOptions
typu.
Důležité
Pokud chcete použít jakoukoli konfiguraci proxy serveru, java vyžaduje, abyste nastavili vlastnost java.net.useSystemProxies
systémového prostředí na true
.
Můžete také vytvořit instanci klienta HTTP, která nepoužívá žádnou konfiguraci proxy serveru, která se nachází v proměnných systémového prostředí. Chcete-li přepsat výchozí chování, explicitně nastavíte v tvůrci klienta HTTP odlišně nakonfigurovaný Configuration
. Když nastavíte v Configuration
tvůrci, už nebude volat Configuration.getGlobalConfiguration()
. Pokud například voláte configuration(Configuration)
pomocí Configuration.NONE
, můžete tvůrci explicitně zabránit v kontrole prostředí pro konfiguraci.
Následující příklad používá proměnnou HTTP_PROXY
prostředí s hodnotou localhost:8888
k použití Fiddleru jako proxy serveru. Tento kód ukazuje vytvoření netty a klienta OKHttp HTTP. (Další informace o konfiguraci klienta HTTP najdete v tématu Klienti a kanály HTTP.)
export HTTP_PROXY=localhost:8888
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder().build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder().build();
Pokud chcete zabránit použití proxy serveru prostředí, nakonfigurujte tvůrce klienta HTTP tak Configuration.NONE
, jak je znázorněno v následujícím příkladu:
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
.configuration(Configuration.NONE)
.build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
.configuration(Configuration.NONE)
.build();
Použití konfiguračního proxy serveru
Místo čtení z prostředí můžete nakonfigurovat tvůrce klientů HTTP tak, aby používali vlastní Configuration
nastavení se stejnými nastaveními proxy serveru, která už jsou z prostředí přijata. Tato konfigurace nabízí možnost opakovaně použitelných konfigurací, které jsou vymezeny na omezený případ použití. Když tvůrce klienta HTTP vytváří HttpClient
, použije vrácenou ProxyOptions
z ProxyOptions.fromConfiguration(<Configuration passed into the builder>)
.
Následující příklad používá http.proxy*
konfigurace nastavené v objektu Configuration
k použití proxy, který ověřuje Fiddler jako 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();
Použití explicitního proxy serveru
Klientské knihovny Java se dodávají s ProxyOptions
třídou, která funguje jako typ klientských knihoven Azure pro konfiguraci proxy serveru. Můžete nakonfigurovat ProxyOptions
síťový protokol používaný k odesílání požadavků proxy serveru, adresy proxy serveru, přihlašovacích údajů pro ověření proxy serveru a hostitelů, které nejsou proxy servery. Vyžaduje se jenom síťový protokol proxy serveru a adresa proxy serveru. Při použití přihlašovacích údajů pro ověřování musíte nastavit uživatelské jméno i heslo.
Následující příklad vytvoří jednoduchou ProxyOptions
instanci, která proxy požádá o výchozí adresu Fiddleru (localhost:8888
):
ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("localhost", 8888));
Následující příklad vytvoří ověřený ProxyOptions
proxy server požadavků na instanci Fiddler vyžadující ověření proxy serverem:
// 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");
Tvůrce klientů HTTP můžete nakonfigurovat přímo tak ProxyOptions
, aby označovali explicitní proxy server, který se má použít. Tato konfigurace je nejpodrobnější způsob, jak poskytnout proxy server, a obecně není tak flexibilní jako předávání Configuration
, které můžete ztlumit za účelem aktualizace požadavků na proxy server.
Následující příklad používá ProxyOptions
Fiddler jako proxy server:
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();
Další kroky
Teď, když znáte konfiguraci proxy serveru v sadě Azure SDK pro Javu, najdete v tématu Konfigurace trasování v sadě Azure SDK pro Javu , abyste lépe porozuměli tokům v rámci vaší aplikace a pomohli diagnostikovat problémy.