Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Dit artikel bevat een overzicht van het configureren van de Azure SDK voor Java om het juiste gebruik van proxy's te maken.
HTTP-proxyconfiguratie
De Azure-clientbibliotheken voor Java bieden meerdere manieren om een proxy voor een HttpClientte configureren.
Elke methode voor het leveren van een proxy heeft zijn eigen voor- en nadelen en biedt verschillende niveaus van inkapseling. Wanneer u een proxy voor een HttpClient hebt geconfigureerd, zal de proxy voor de rest van zijn levensduur worden gebruikt. Als de proxy is gekoppeld aan een persoon HttpClient , kan een toepassing meerdere HttpClient exemplaren gebruiken, waarbij elk een andere proxy kan gebruiken om te voldoen aan de proxyvereisten van een toepassing.
De proxyconfiguratieopties zijn:
Een omgevingsproxy gebruiken
HTTP-clientbouwers controleren standaard de omgeving voor proxyconfiguraties. Dit proces maakt gebruik van de Azure SDK voor Java-API's Configuration . Wanneer de bouwer een client maakt, wordt deze geconfigureerd met een kopie van de globale configuratie die wordt opgehaald via Configuration.getGlobalConfiguration(). Deze oproep leest elke HTTP-proxyconfiguratie uit de systeemomgeving in.
Wanneer de opbouwfunctie de omgeving inspecteert, wordt gezocht naar de volgende omgevingsconfiguraties in de opgegeven volgorde:
- HTTPS_PROXY
- HTTP_PROXY
- https.proxy*
- http.proxy*
De * naam vertegenwoordigt de bekende Eigenschappen van de Java-proxy. Zie Java-netwerken en proxy's in de Oracle-documentatie voor meer informatie.
Als de opbouwfunctie een van de omgevingsconfiguraties vindt, wordt er een exemplaar gemaakt door aan ProxyOptions te roepen ProxyOptions.fromConfiguration(Configuration.getGlobalConfiguration()). In dit artikel vindt u meer informatie over het ProxyOptions type.
Belangrijk
Als u impliciet wilt gebruiken HTTPS_PROXY of HTTP_PROXYjava moet u de systeemomgevingseigenschap java.net.useSystemProxies instellen op true.
U kunt ook een HTTP-clientinstantie maken die geen proxyconfiguratie gebruikt die aanwezig is in de omgevingsvariabelen van het systeem. Als u het standaardgedrag wilt overschrijven, stelt u expliciet een ander geconfigureerde Configuration in de HTTP-clientbouwer in. Wanneer u een Configuration in de bouwer instelt, zal Configuration.getGlobalConfiguration() niet meer worden aangeroepen. Als u bijvoorbeeld configuration(Configuration) aanroept met Configuration.NONE, kunt u expliciet voorkomen dat de builder de omgeving op configuraties inspecteert.
In het volgende voorbeeld wordt de HTTP_PROXY omgevingsvariabele met waarde localhost:8888 gebruikt om Fiddler als proxy te gebruiken. Deze code laat zien hoe u een Netty en een OKHttp HTTP-client maakt. (Zie HTTP-clients en -pijplijnen voor meer informatie over http-clientconfiguratie.)
export HTTP_PROXY=localhost:8888
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder().build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder().build();
Als u wilt voorkomen dat de omgevingsproxy wordt gebruikt, configureert u de HTTP-clientbouwer met Configuration.NONE, zoals wordt weergegeven in het volgende voorbeeld:
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
    .configuration(Configuration.NONE)
    .build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
    .configuration(Configuration.NONE)
    .build();
Een configuratieproxy gebruiken
In plaats van te lezen uit de omgeving, kunt u HTTP-clientbouwers configureren voor gebruik van een aangepaste Configuration met dezelfde proxy-instellingen die al worden geaccepteerd vanuit de omgeving. Deze configuratie biedt de mogelijkheid om herbruikbare configuraties te hebben die zijn afgestemd op een beperkt gebruiksscenario. Wanneer de HTTP-clientbouwer HttpClient aan het bouwen is, zal hij de ProxyOptions gebruiken die wordt geretourneerd door ProxyOptions.fromConfiguration(<Configuration passed into the builder>).
In het volgende voorbeeld worden de http.proxy* configuraties gebruikt die zijn ingesteld in een Configuration object om een proxy te gebruiken waarmee Fiddler als proxy wordt geverifieerd.
Configuration configuration = new ConfigurationBuilder()
    .putProperty("http.proxyHost", "localhost")
    .putProperty("http.proxyPort", "8888")
    .putProperty("http.proxyUser", "1")
    .putProperty("http.proxyPassword", "1")
    .build();
HttpClient nettyHttpClient = new NettyAsyncHttpClientBuilder()
    .configuration(configuration)
    .build();
HttpClient okhttpHttpClient = new OkHttpAsyncHttpClientBuilder()
    .configuration(configuration)
    .build();
Een expliciete proxy gebruiken
De Java-clientbibliotheken worden geleverd met een ProxyOptions klasse die fungeert als het type Azure-clientbibliotheken voor het configureren van een proxy. U kunt het instellen van ProxyOptions voor het netwerkprotocol dat wordt gebruikt voor het verzenden van proxyverzoeken, het proxyadres, authenticatiegegevens voor proxyverificatie en hosts die niet geproxyd worden. Alleen het proxynetwerkprotocol en het proxyadres zijn vereist. Wanneer u verificatiereferenties gebruikt, moet u zowel de gebruikersnaam als het wachtwoord instellen.
In het volgende voorbeeld wordt een eenvoudige ProxyOptions instantie gemaakt die verzoeken naar het standaardadres van Fiddler doorstuurt (localhost:8888):
ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress("localhost", 8888));
In het volgende voorbeeld wordt een geauthenticeerde instantie ProxyOptions gemaakt die verzoeken doorstuurt naar een Fiddler-instantie waarvoor proxyverificatie vereist is.
// 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");
U kunt HTTP-clientbouwers ProxyOptions rechtstreeks configureren om een expliciete proxy aan te geven die moet worden gebruikt. Deze configuratie is de meest fijnmazige manier om een proxy te bieden en is over het algemeen niet zo flexibel als het doorgeven van een Configuration die u kunt aanpassen om proxyvereisten bij te werken.
In het volgende voorbeeld wordt ProxyOptions Gebruikgemaakt van Fiddler als 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();
Volgende stappen
Nu u bekend bent met proxyconfiguratie in de Azure SDK voor Java, raadpleegt u Tracering configureren in de Azure SDK voor Java om meer inzicht te krijgen in stromen in uw toepassing en om problemen te helpen diagnosticeren.