【发布时间】:2020-03-27 13:14:18
【问题描述】:
我已经使用授权类型客户端凭据实现了 webclient 和 oAuth2。我必须使用代理访问局。但是webclient没有使用我配置的主机。
HttpClient httpClient = HttpClient.create()
.tcpConfiguration(tcpClient -> tcpClient.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, connectionTimeout)
.doOnConnected(conn -> conn.addHandlerLast(new ReadTimeoutHandler(readTimeout, TimeUnit.MILLISECONDS)))
.proxy(proxy -> proxy.type(ProxyProvider.Proxy.HTTP).host(proxyHost).port(proxyPort)));
如果我用系统配置代理,它工作正常:
System.setProperty("proxyHost", "host);
System.setProperty("proxyPort", "8080");
但我不能在云端使用系统属性。请建议我一些解决方法或任何解决方案。
我遇到了以下异常: “org.springframework.security.oauth2.core.OAuth2AuthorizationException:[invalid_token_response] 尝试检索 OAuth 2.0 访问令牌响应时发生错误:\“https://tokenURL”的 POST 请求出现 I/O 错误:api.uat.equifax .com;嵌套异常是 java.net.UnknownHostException: resourseURL\r\n\tat org.springframework.security.oauth2.client.endpoint.DefaultClientCredentialsTokenResponseClient.getTokenResponse(DefaultClientCredentialsTokenResponseClient.java:79)\r \n\tat ...”
【问题讨论】:
-
错误信息很清楚,未知主机“tokenURL”在我看来不是有效的主机名
"host看起来无效 -
感谢您的回复 Adolf,实际上在我的代码中我使用的是实际主机名,但由于某些安全原因,我没有将其粘贴到此处。 proxy.type(ProxyProvider.Proxy.HTTP).host(proxyHost).port(proxyPort))
-
正如我之前所说,错误消息很清楚,UnknownHostException
-
是的,你是对的 Adolf,但是当我使用上面提到的 System.setProperty 设置代理时,我没有得到这个 unknownHostException。我不想使用 System 设置代理,我想通过单独使用 HttpClient 设置代理来遵循传统方法。当我们这样做时,我得到 UnknownhostException。如果可能的话,建议我一些解决方法或任何修复方法。
-
我的建议是调试应用程序/源代码并检查抛出异常时实际存在的值。由于错误不在您发布的代码中。
标签: java spring-boot oauth-2.0 spring-webflux spring-webclient