Share via


Java için Azure SDK'da proxy'leri yapılandırma

Bu makalede, proxy'leri düzgün bir şekilde kullanmak üzere Java için Azure SDK'sını yapılandırmaya yönelik genel bir bakış sağlanmaktadır.

HTTP proxy yapılandırması

Java için Azure istemci kitaplıkları, bir için HttpClientara sunucu yapılandırmanın birden çok yolunu sunar.

Bir ara sunucu sağlamanın her yönteminin kendi avantajları ve dezavantajları vardır ve farklı kapsülleme düzeyleri sağlar. için HttpClientbir ara sunucu yapılandırdığınızda, ara sunucuyu ömrü boyunca kullanır. Proxy'nin bir bireye HttpClient bağlı olması, bir uygulamanın her birinin bir uygulamanın ara sunucu gereksinimlerini karşılamak için farklı bir ara sunucu kullanabildiği birden çok HttpClient örnek kullanmasına olanak tanır.

Ara sunucu yapılandırma seçenekleri şunlardır:

Ortam ara sunucusu kullanma

Varsayılan olarak, HTTP istemci oluşturucuları ortamı ara sunucu yapılandırmaları için inceler. Bu işlem Java Configuration API'leri için Azure SDK'sını kullanır. Oluşturucu bir istemci oluşturduğunda, çağrılarak Configuration.getGlobalConfiguration()alınan 'genel yapılandırma' kopyasıyla yapılandırılır. Bu çağrı, sistem ortamından herhangi bir HTTP proxy yapılandırmasında okunur.

Oluşturucu ortamı incelediğinde, aşağıdaki ortam yapılandırmalarını belirtilen sırada arar:

  1. HTTPS_PROXY
  2. HTTP_PROXY
  3. https.proxy*
  4. http.proxy*

iyi * bilinen Java proxy özelliklerini temsil eder. Daha fazla bilgi için Oracle belgelerindeki Java Ağı ve Proxy'leri bölümüne bakın.

Oluşturucu ortam yapılandırmalarından herhangi birini bulursa çağırarak ProxyOptions.fromConfiguration(Configuration.getGlobalConfiguration())bir ProxyOptions örnek oluşturur. Bu makalede, türü hakkında daha fazla ayrıntı aşağıda verilmiştir ProxyOptions .

Önemli

Herhangi bir ara sunucu yapılandırmasını kullanmak için Java, sistem ortamı özelliğini java.net.useSystemProxies olarak trueayarlamanızı gerektirir.

Ayrıca, sistem ortamı değişkenlerinde mevcut herhangi bir ara sunucu yapılandırması kullanmayan bir HTTP istemci örneği de oluşturabilirsiniz. Varsayılan davranışı geçersiz kılmak için, HTTP istemci oluşturucusunda açıkça farklı yapılandırılmış Configuration bir ayarlarsınız. Oluşturucuda bir Configuration ayarladığınızda, artık çağrılmayacak Configuration.getGlobalConfiguration(). Örneğin, kullanarak Configuration.NONEçağırırsanızconfiguration(Configuration), oluşturucunun ortamı yapılandırma için denetlemesini açıkça engelleyebilirsiniz.

Aşağıdaki örnek, ara sunucu olarak Fiddler'ı kullanmak için değere localhost:8888 sahip ortam değişkenini kullanırHTTP_PROXY. Bu kod, Netty ve OkHttp HTTP istemcisi oluşturmayı gösterir. (HTTP istemci yapılandırması hakkında daha fazla bilgi için bkz. HTTP istemcileri ve işlem hatları.)

export HTTP_PROXY=localhost:8888
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder().build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder().build();

Ortam proxy'sinin kullanılmasını önlemek için, aşağıdaki örnekte gösterildiği gibi ile Configuration.NONEHTTP istemci oluşturucusunu yapılandırın:

HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
    .configuration(Configuration.NONE)
    .build();

HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
    .configuration(Configuration.NONE)
    .build();

Yapılandırma ara sunucusu kullanma

Ortamdan okumak yerine, HTTP istemci oluşturucularını ortamdan zaten kabul edilmiş olan proxy ayarlarıyla özel Configuration kullanacak şekilde yapılandırabilirsiniz. Bu yapılandırma, sınırlı bir kullanım örneği kapsamında yeniden kullanılabilir yapılandırmalara sahip olma olanağı sunar. HTTP istemci oluşturucusu öğesini HttpClientoluştururken, tarafından ProxyOptions.fromConfiguration(<Configuration passed into the builder>)döndürülen öğesini ProxyOptions kullanır.

Aşağıdaki örnek http.proxy* , bir Configuration nesnede ayarlanan yapılandırmaları kullanarak ara sunucu olarak Fiddler kimliğini doğrulayan bir ara sunucu kullanır.

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();

Açık ara sunucu kullanma

Java istemci kitaplıkları, ara sunucu yapılandırmak için Azure istemci kitaplıkları türü işlevi gören bir ProxyOptions sınıfla birlikte sevk eder. Ara sunucu istekleri, ara sunucu adresi, proxy kimlik doğrulaması kimlik bilgileri ve ara sunucu olmayan konaklar göndermek için kullanılan ağ protokolüyle yapılandırabilirsiniz ProxyOptions . Yalnızca ara sunucu ağ protokolü ve proxy adresi gereklidir. Kimlik doğrulama kimlik bilgilerini kullanırken hem kullanıcı adını hem de parolayı ayarlamanız gerekir.

Aşağıdaki örnek, proxy'lerin varsayılan Fiddler adresine (localhost:8888) istekte bulunan basit ProxyOptions bir örnek oluşturur:

ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("localhost", 8888));

Aşağıdaki örnek, ara sunucu kimlik doğrulaması gerektiren bir Fiddler örneğine proxy isteklerinde bulunan kimliği doğrulanmış ProxyOptions bir oluşturur:

// 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");

Http istemci oluşturucularını ProxyOptions , kullanılacak açık bir ara sunucuyu göstermek için ile doğrudan yapılandırabilirsiniz. Bu yapılandırma, ara sunucu sağlamanın en ayrıntılı yoludur ve genellikle ara sunucu gereksinimlerini güncelleştirmek için sessize almak kadar Configuration esnek değildir.

Aşağıdaki örnek, ara sunucu olarak Fiddler'ı kullanmak için kullanır ProxyOptions :

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();

Sonraki adımlar

Java için Azure SDK'sında ara sunucu yapılandırması hakkında bilgi edindiğinize göre, uygulamanızdaki akışları daha iyi anlamak ve sorunları tanılamaya yardımcı olmak için bkz . Java için Azure SDK'da izlemeyi yapılandırma.