SpringBoot 设置HTTP代理访问

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);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/77843.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在C# WebApi 中使用 Nacos01:基础安装教程和启动运行

一、JDK的安装 Nacos需要依赖JAVA环境运行,所以需要先安装JDK 1.检查是否安装 可用命令行检查是否安装JDK 直接win+r,cmd: java -version 出现这个说明安装成功 2.下载JDK 访问官网点击下载:

cURL 入门:10 分钟学会用命令行发 HTTP 请求

curl初识 curl 通过 URL 传输数据的命令行工具和库是一个非常强大的命令行工具,用于在网络上传输数据。它支持众多的协议,像 dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtsp smb smbs smtp smtps…

Redis应用场景实战:穿透/雪崩/击穿解决方案与分布式锁深度剖析

一、缓存异常场景全解与工业级解决方案 1.1 缓存穿透:穿透防御的三重门 典型场景 恶意爬虫持续扫描不存在的用户ID 参数注入攻击(如SQL注入式查询) 业务设计缺陷导致无效查询泛滥 解决方案进化论 第一层防护:布隆过滤器&am…

C# 高效操作excel文件

C#高效操作Excel文件指南 一、主流Excel处理方案对比 方案类型特点适用场景​​EPPlus​​第三方库功能全面,性能好,支持.xlsx复杂Excel操作,大数据量​​NPOI​​第三方库支持.xls和.xlsx,功能全面兼容旧版Excel文件​​Closed…

Rust 学习笔记:结构体(struct)

Rust 学习笔记:结构体(struct) Rust 学习笔记:结构体(struct)结构体的定义和实例化使用字段初始化简写用 Struct Update 语法从其他实例创建实例使用没有命名字段的元组结构来创建不同的类型没有任何字段的…

Dify Agent节点的信息收集策略示例

Dify Agent节点的信息收集策略示例 0. 安装"对话 Agent"插件1. 创建一个 Chatflow2. 创建一个 Agent 节点3. 创建一个条件分支节点4. 在IF分支创建一个LLM节点5. 创建一个直接回复节点6. 在ELSE分支创建一个直接回复节点7. 分布并预览 0. 安装"对话 Agent"…

Qt/C++开发监控GB28181系统/获取设备信息/设备配置参数/通道信息/设备状态

一、前言 设备注册成功后,接下来要做的就是获取设备的信息,尤其是通道信息,根据国标协议,永远只有两个层级,一个是设备,然后就是设备下面多个通道,设备编码在整个系统中唯一,通道编…

金融风控的“天眼”:遥感技术的创新应用

在金融市场的复杂博弈中,风险管控一直是金融机构的核心竞争力。然而,传统的风控手段在应对现代金融市场的快速变化时,往往显得捉襟见肘。 如今,遥感技术的创新应用为金融风控带来了全新的视角和手段。星图云开放平台的遥感金融立体…

HFI笔记

高频分量: 载波频率的一半 选择alfabeta轴进行计算的原因 最终结果: 观测器方程 采样加减分离法-(高低频分离) 高频信号的评论高频载波 转子极性辨识

halcon关闭图形窗口

1、dev_close_window () 调用一次这个函数关闭一个图形窗口,并且先关闭最后打开的那个图形窗口,如果一共打开了N个图形窗口,那么就需要调用dev_close_window N次。

每日算法-250430

每日算法 - 2025年4月30日 记录下今天解决的两道题目。 870. 优势洗牌 (Advantage Shuffle) 题目描述 解题思路与方法 核心思想:贪心策略 (田忌赛马) 这道题的目标是对于 nums1 中的每个元素,找到 nums2 中一个比它小的元素进行配对(如果…

【MySQL】增删改查(CRUD)

目录 一. CRUD是什么 二. Create(新增数据) 2.1 单行数据全列插入 2.2 单行数据指定列插入 2.3 多行数据指定列插入 三. Retrieve (检索/查询) 3.1 全列查询 3.2 指定列查询 3.3 查询字段为表达式 3.4 为查询结果指定别名 3…

电商平台 API 开发实战:京东商品详情数据实时获取接口对接教程

在电商行业竞争日益激烈的当下,实时获取商品详情数据对于市场分析、竞品监控、商品推荐等业务场景至关重要。京东作为国内领先的电商平台,提供了强大的 API 接口,允许开发者获取丰富的商品信息。本文将详细介绍京东商品详情数据实时获取接口的…

YOLO视觉模型可视化训练与推理测试工具

推荐一款YOLO可视化训练测试工具: 对于yolo的训练,新手小白往往无从下手,本章推荐的这款工具可以非常轻易的帮您从模型训练到测试到部署。 下载地址http://www.voouer.com/yolo 可以点击此处跳转。 下载成功后打开这款工具,将会出现图形化界面,类似于下图所示: 当前页是可视…

微调 LLaMA 2:定制大型语言模型的分步指南

微调 LLaMA 2:定制大型语言模型的分步指南 深入了解如何运用新技术在 Google Colab 平台上对 Llama-2 进行微调操作,从而有效克服内存与计算方面的限制,让开源大型语言模型变得更加易于获取和使用。自从 Meta 发布了 LLaMA 的首个版本后&…

探秘明远智睿SSD2351开发板在HMI领域的独特魅力

人机界面(HMI)是人与机器进行交互的重要桥梁,其性能和用户体验直接影响到整个系统的使用效果。明远智睿的SSD2351开发板凭借其出色的性能和丰富的功能,在HMI领域展现出了独特的魅力。 SSD2351开发板的四核1.4GHz处理器具备强大的图…

Keysight万用表使用指南及基于Python采集数据生成Excel文件

文章目录 说明使用的库openpyxlpyvisa 代码说明效果展示参考代码 说明 本文介绍了 Keysight 34465A 的基本使用和 SCPI 指令设置,演示了使用 Python 的 PyVISA 库控制两台 34465A 同时采集数据的完整流程,包括设置采样参数、触发测量、读取数据、使用 O…

Docker 获取 Python 镜像操作指南

1. 安装 Docker 环境 1.1 上传安装脚本(Windows → Linux) 在 Windows 的 CMD 中执行: scp docker.sh root10.1.1.58:~ 可自行前往我的飞书下载docker.sh脚本 Docs 1.2 在 Linux 中检查文件 ls -l ~ # 确认 docker.sh 已上传到家目录…

JavaScript:从JS的执行机制到location对象

一、JS执行机制 (1)JS是单线程 JavaScript语言的一大特点就是单线程,也就是同一时间只能做一件事。因为JavaScript是为了处理页面中的用户交互,以及制作DOM二诞生的。比如我们对某个DOM元素进行添加和删除操作,这个不…

iVX:数字化转型全场景技术革新与生态构建实践

在数字经济蓬勃发展的当下,企业数字化转型需求日益迫切。iVX 凭借其独特的技术架构与创新解决方案,深度渗透工业互联网、元宇宙、智慧城市等领域,成为推动全场景数字化转型的重要力量。本文将重新梳理 iVX 的技术应用与生态价值,以…