通过代理访问,对于java后端可能用得不多的,但有过爬虫开发经验的小伙伴可能一点也不会陌生,有时候不太方便直接去访问目标资源,借助代理是要给选择,对于RestTemplate而言,使用代理的姿势同样如设置超时一般,借助SimpleClientHttpRequestFactory
来实现,本文演示一下具体的使用case
I. 环境准备
1. 项目环境
借助SpringBoot搭建一个SpringWEB项目,提供一些用于测试的REST服务
- SpringBoot版本:
2.2.1.RELEASE
- 核心依赖:
spring-boot-stater-web
1 | <dependencies> |
为了后续输出的日志更直观,这里设置了一下日志输出格式,在配置文件application.yml
中,添加
1 | logging: |
2. 测试端点
我们的测试端点,主要需要返回客户端主机信息,我们这里直接借助HttpServletRequest#getRemoteHost
+ HttpServlet#getRemotePort
来实现(当然实际的业务开发中不建议直接使用它)
1 |
|
3. 代理服务器搭建
我们这里借助tinyproxy来搭建代理服务器,详细步骤可以参考博文: http代理服务器tinyproxy搭建手册
本文的演示中,是在192.168.0.241
状态centos机器上安装的,步骤如下
1 | 1. sudo yum install tinyproxy -y |
II. 代理访问
接下来进入正文演示,核心代码也比较简单
1 | /** |
请注意,上面的使用姿势中
- Proxy的方式除了HTTP之外还有SOCKS,这个是与代理服务器的支持方式相关的
postForEntity
中url的ip是我本机的ip,而不是127.0.0.1
测试输出如下:
1 | (proxy request ans: <200,params: {"name":["一灰灰"],"age":["20"]} |
II. 其他
0. 项目&系列博文
博文
- 【WEB系列】RestTemplate之超时设置
- 【WEB系列】RestTemplate之中文乱码问题fix
- 【WEB系列】RestTemplate之自定义请求头
- 【WEB系列】RestTemplate基础用法小结
源码
- 工程:https://github.com/liuyueyi/spring-boot-demo
- 源码: https://github.com/liuyueyi/spring-boot-demo/tree/master/spring-boot/221-web-resttemplate
1. 一灰灰Blog
尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
下面一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
- 一灰灰Blog个人博客 https://blog.hhui.top
- 一灰灰Blog-Spring专题博客 http://spring.hhui.top
Be the first person to leave a comment!