企业网络下使用WebClient代理时如何解决UnresolvedAddressException?
解决WebClient代理配置导致的UnresolvedAddressException异常
问题根源
你代码里的错误出在代理地址的配置上:InetSocketAddress.createUnresolved("http://mycorporate.proxy.com", 8080) 中给主机名加了http://前缀,而InetSocketAddress只需要纯主机名(不含协议),带前缀会导致系统无法正确解析代理服务器的地址,从而抛出UnresolvedAddressException。
修正后的代码
@Bean public WebClient restClient() { HttpClient httpClient = HttpClient.create() .proxy(proxy -> proxy.type(ProxyProvider.Proxy.HTTP) .address(InetSocketAddress.createUnresolved("mycorporate.proxy.com", 8080))); ReactorClientHttpConnector connector = new ReactorClientHttpConnector(httpClient); return WebClient .builder() .clientConnector(connector) .build(); }
额外排查点
- 确认代理主机名和端口是否和企业网络配置一致,避免拼写错误
- 如果企业代理需要用户名密码认证,需要补充认证配置:
.proxy(proxy -> proxy.type(ProxyProvider.Proxy.HTTP) .address(InetSocketAddress.createUnresolved("mycorporate.proxy.com", 8080)) .username("your-proxy-username") .password(() -> "your-proxy-password".toCharArray())) - 测试代理地址是否可以正常访问,比如用
ping mycorporate.proxy.com或者telnet mycorporate.proxy.com 8080验证连通性
内容的提问来源于stack exchange,提问作者IceBane
相关产品推荐
相关产品推荐

