SpringBoot设置HTTP代理访问
遇到这样的一个场景,代码部署到私有服务器上去之后,这台私有服务器a无法直接访问公网,需要通过代理转发到另外一台专门访问公网的服务器b, 让服务器b去请求对应的公网ip,于是就需要设置Http代理。
通常使用springboot会用到两种不同的httpclient
- spring-boot-starter-webflux 这个包下面的WebClient
- Spring-web 这个包下面的RestTemplate
WebClient
通过设置Httpclinet添加绑定的代理地址,然后给WebClient里添加这个Httpclient
HttpClient httpClient = HttpClient.create()
.proxy(proxy -> proxy
.type(ProxyProvider.Proxy.HTTP)
.address(new InetSocketAddress("192.168.0.1", 8080)) // 你的代理IP和端口
);
WebClient webClient = webClientBuilder
.baseUrl("https://www.baidu.com")
.clientConnector(new ReactorClientHttpConnector(httpClient))
.build();
String result = webClient.get()
.retrieve()
.bodyToMono(String.class)
.block();RestTemplate
// 服务器代理
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("192.168.0.1", 8080));
// 配置 request factory
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setProxy(proxy);
RestTemplate restTemplate = new RestTemplate();
ProxySetting proxySetting = SpringContextHolder.getBean(ProxySetting.class);
// This allows us to read the response more than once - Necessary for debugging.
// 如果开启代理,则配置走服务器代理。否则走本地调试
if (proxySetting.isEnable()) {
restTemplate.setRequestFactory(requestFactory);
} else {
restTemplate.setRequestFactory(new SimpleClientHttpRequestFactory());
}
DefaultUriBuilderFactory uriBuilderFactory = new DefaultUriBuilderFactory(); uriBuilderFactory.setEncodingMode(DefaultUriBuilderFactory.EncodingMode.VALUES_ONLY);
restTemplate.setUriTemplateHandler(uriBuilderFactory);
String url = "https://www.baidu.com"
String response = restTemplate.getForObject(url, String.class);到此这篇关于SpringBoot设置HTTP代理访问的文章就介绍到这了,更多相关SpringBoot设置HTTP代理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java异常:java.net.UnknownHostException产生的原因和解决方案
这篇文章主要给大家介绍了关于Java异常:java.net.UnknownHostException产生的原因和解决方案,这个异常是java.net包中的一部分,具体说它是类的一个实例,异常通常是由主机名无法解析为IP地址引起的,文中将解决的办法介绍的非常详细,需要的朋友可以参考下2024-01-01
spring boot与spring mvc的区别及功能介绍
这篇文章主要介绍了spring boot与spring mvc的区别是什么以及spring boot和spring mvc功能介绍,感兴趣的朋友一起看看吧2018-02-02
SpringCloud中使用webclient(get和post)请求微服务接口数据
在SpringCloud项目中使用WebClient调用微服务时,涉及配置WebClient、发起get和post请求等操作,如请求头设置、服务地址配置、数据转换处理、异常处理等,避免在循环中使用WebClient请求、路径设置细节以及数据返回处理技巧,本文旨在帮助理解和应用WebClient进行微服务调用2024-10-10


最新评论