我正在尝试实现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