SpringBoot设置HTTP代理访问

 更新时间:2025年06月19日 09:38:29   作者:柯南二号  
本文主要介绍了SpringBoot在私有服务器通过代理访问公网的配置方法,涉及WebClient和RestTemplate两种客户端的代理设置,帮助实现跨服务器网络请求

遇到这样的一个场景,代码部署到私有服务器上去之后,这台私有服务器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代理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • SpringBoot配置Clickhouse的示例代码

    SpringBoot配置Clickhouse的示例代码

    这篇文章主要介绍了SpringBoot配置Clickhouse的示例代码,代码简单易懂,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下
    2022-02-02
  • Java并发编程之Semaphore详解

    Java并发编程之Semaphore详解

    这篇文章主要介绍了Java并发编程之concurrent包中的Semaphore详解,信号量Semaphore一般用来表示可用资源的个数,相当于一个计数器,可类比生活中停车场牌子上面显示的停车场剩余车位数量,需要的朋友可以参考下
    2023-12-12
  • java导出生成csv文件的方法

    java导出生成csv文件的方法

    这篇文章主要为大家详细介绍了java导出生成csv文件的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • IntelliJ IDEA失焦自动重启服务的解决方法

    IntelliJ IDEA失焦自动重启服务的解决方法

    在使用 IntelliJ IDEA运行 SpringBoot 项目时,你可能会遇到一个令人困扰的问题,一旦你的鼠标指针离开当前IDE窗口,点击其他位置时, IDE 窗口会失去焦点,你的 SpringBoot 服务就会自动重启,所以本文给大家介绍了IntelliJ IDEA失焦自动重启服务的解决方法
    2023-10-10
  • springboot集成redis存对象乱码的问题及解决

    springboot集成redis存对象乱码的问题及解决

    这篇文章主要介绍了springboot集成redis存对象乱码的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Java高效读取大文件实例分析

    Java高效读取大文件实例分析

    这篇文章主要介绍了Java高效读取大文件实例分析,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • JAVA如何获取工程下的文件

    JAVA如何获取工程下的文件

    这篇文章主要介绍了JAVA如何获取工程下的文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • java 取模与取余的区别说明

    java 取模与取余的区别说明

    这篇文章主要介绍了java 取模与取余的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • springsecurity实现登录验证以及根据用户身份跳转不同页面

    springsecurity实现登录验证以及根据用户身份跳转不同页面

    Spring Security是一种基于Spring框架的安全技术,用于实现身份验证和访问控制,本文介绍了如何使用Spring Security,结合session和redis来存储用户信息,并通过编写特定的登录处理类和Web配置,实现用户登录和注销功能
    2024-09-09
  • java读取word-excel-ppt文件代码

    java读取word-excel-ppt文件代码

    OFFICE文档使用POI控件,PDF可以使用PDFBOX0.7.3控件,完全支持中文,用XPDF也行,不过感觉PDFBOX比较好,而且作者也在更新。水平有限,万望各位指正
    2009-04-04

最新评论