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í:

  1. HTTPS_PROXY
  2. HTTP_PROXY
  3. https.proxy*
  4. 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.