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 HttpClient
ara 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 HttpClient
bir 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:
HTTPS_PROXY
HTTP_PROXY
https.proxy*
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 true
ayarlamanı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.NONE
HTTP 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 HttpClient
oluş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.