在Java中向Microsoft Graph Client添加代理设置



我正在尝试实现GraphClient,下面是一个运行良好的示例代码。。。

ClientCredentialProvider authProvider = 
new ClientCredentialProvider(clientId,
scopes,
clientSecret,
b2cTenant,
endpoint);

IGraphServiceClient graphClient = graphClient = GraphServiceClient.builder()
.authenticationProvider(authProvider)
.buildClient();

这很好。。。但在某些情况下,从代码运行的地方,有一个代理,所以我需要设置代理来连接到互联网。我需要设置代理,并以某种方式将其传递给graphClient,以告知通过代理进行呼叫。

我试图找到一份文件,但没有通过。我得到了这个。。。

ProxyOptions proxyOptions = new ProxyOptions(ProxyOptions.Type.HTTP, new InetSocketAddress(proxyUrl, proxyPort));
proxyOptions.setCredentials(proxyUser, proxyPassword);
final UsernamePasswordCredential usernamePasswordCredential = new UsernamePasswordCredentialBuilder()
.clientId(clientId)
.username(username)
.password(password)
.httpClient(HttpClient.createDefault(new HttpClientOptions().setProxyOptions(proxyOptions)))
.build();

但问题是;ProxyOptions";不在Maven中,我不确定它是哪个库的一部分。

有人能提出一个想法吗。

正在更新答案。。。

ProxyOptions proxyOptions = new ProxyOptions(
ProxyOptions.Type.HTTP, new InetSocketAddress(hostAddress, hostPort));

HttpClientOptions clientOptions = new HttpClientOptions();
clientOptions.setProxyOptions(proxyOptions); 

HttpClient azHttpClient = HttpClient.createDefault(clientOptions);

ClientSecretCredential clientSecretCredential = new ClientSecretCredentialBuilder()
.clientId(clientId)
.clientSecret(clientSecret)
.tenantId(tenantId)
.httpClient(azHttpClient)
.build();
TokenCredentialAuthProvider tokenCredentialAuthProvider = 
new TokenCredentialAuthProvider(scopes, clientSecretCredential);

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(hostAddress, hostPort));

OkHttpClient httpClient = HttpClients.createDefault(tokenCredentialAuthProvider)
.newBuilder()
.proxy(proxy)
.build();
graphClient = GraphServiceClient.builder()
.authenticationProvider(tokenCredentialAuthProvider)
.httpClient(httpClient)
.buildClient();

如果可以使用系统属性,则尝试通过进行配置

https.proxyHost和https.proxyPort

最新更新