RestTemplate设置代理
1.介绍
了解如何使用 RestTemplate 向代理发送请求。
2.依赖
首先,RestTemplateCustomizer 使用 HttpClient 类连接到代理。
要使用该类,需要将 Apache 的 httpcore 依赖添加到 Maven pom.xml 文件中:
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpcore</artifactId><version>4.4.13</version>
</dependency>
gradle依赖
compile 'org.apache.httpcomponents:httpcore:4.4.13'
3.使用SimpleClientHttpRequestFactory
使用 RestTemplate 向代理发送请求非常简单。 需要做的就是在构建 RestTemplate 对象之前从 SimpleClientHttpRequestFactory 调用 setProxy(java.net.Proxy)。
首先,从配置 SimpleClientHttpRequestFactory 开始:
Proxy proxy = new Proxy(Type.HTTP, new InetSocketAddress(PROXY_SERVER_HOST, PROXY_SERVER_PORT));
SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
requestFactory.setProxy(proxy);
然后,继续将请求工厂实例传递给 RestTemplate 构造函数:
RestTemplate restTemplate = new RestTemplate(requestFactory);
最后,一旦构建了 RestTemplate,就可以使用它来发出代理请求:
ResponseEntity<String> responseEntity = restTemplate.getForEntity("http://httpbin.org/get", String.class);assertThat(responseEntity.getStatusCode(), is(equalTo(HttpStatus.OK)));
4.使用RestTemplateCustomizer
另一种方法是使用带有 RestTemplateBuilder 的 RestTemplateCustomizer 来构建自定义的 RestTemplate。
定义一个 ProxyCustomizer:
class ProxyCustomizer implements RestTemplateCustomizer {@Overridepublic void customize(RestTemplate restTemplate) {HttpHost proxy = new HttpHost(PROXY_SERVER_HOST, PROXY_SERVER_PORT);HttpClient httpClient = HttpClientBuilder.create().setRoutePlanner(new DefaultProxyRoutePlanner(proxy) {@Overridepublic HttpHost determineProxy(HttpHost target, HttpRequest request, HttpContext context) throws HttpException {return super.determineProxy(target, request, context);}}).build();restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory(httpClient));}
}
之后,构建自定义的 RestTemplate:
RestTemplate restTemplate = new RestTemplateBuilder(new ProxyCustomizer()).build();
最后,使用 RestTemplate 发出通过代理的请求:
ResponseEntity<String> responseEntity = restTemplate.getForEntity("http://httpbin.org/get", String.class);
assertThat(responseEntity.getStatusCode(), is(equalTo(HttpStatus.OK)));
RestTemplate设置代理相关推荐
- postforobject 设置代理_Spring RestTemplate和代理身份验证
小编典典 经过许多不同的选择之后,由于能够在创建时为RestTemplate设置代理,因此我可以选择以下代码,因此我可以将其重构为单独的方法.只是要注意,它还具有其他依赖性,因此请记住这一点. pri ...
- postforobject 设置代理_OAuth2RestTemplate中的代理配置
我需要使用由OAuth2保护的API.为此我使用OAuth2RestTemplate. 但我得到以下错误: java.net.ConnectException: Connection timed ou ...
- devServer proxy跨域 设置代理 proxy
概念 什么是同源策略 同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一 ...
- linux 设置代理 安装jdk mysql tomcat redis hadoop
1.修改linux用户名和密码 前提进入root用户 原用户名 XX,改成用户名 YY 执行 usermod -l YY XX 修改用户 YY 的密码,如果你在root权限下 ...
- 用iframe设置代理解决ajax跨域请求问题
用iframe设置代理解决ajax跨域请求问题 参考文章: (1)用iframe设置代理解决ajax跨域请求问题 (2)https://www.cnblogs.com/ranzige/p/370965 ...
- Linux中为wget命令设置代理
方法1:使用命令参数-e wget本身没有专门设置代理的命令行参数,但是有一个"-e"参数,可以在命令行上指定一个原本出现在".wgetrc"中的设置.于是可以 ...
- DNS隧道之DNS2TCP实现——dns2tcpc必须带server IP才可以,此外ssh可以穿过墙的,设置代理上网...
我自己的命令: server端: dns2tcpd -F -d 1 -f ./dns2tcpd.conf 输出: 09:08:59 : Debug options.c:97 Add resource ...
- npm获取配置,设置代理
npm获取配置有6种方式,优先级由高到底. 命令行参数. --proxy http://server:port即将proxy的值设为http://server:port. 环境变量. 以npm_con ...
- linux下设置代理
由于我们实验室有自己的代理.所以想用代理,省些money.于是就开始学习怎么设置代理. 先是在网上搜了好些方法.但是怎么都成功不了.最后成功了以后,才发现,原来是网上提供的命令行的大小写有误,而且还少 ...
- HtmlUnit设置代理并解析IFrame页面
1.需求:支持代理设置访问,并采集网页下iframe框架内的页面内容 2.参考代码如下: package com;import java.io.FileInputStream;import org.a ...
最新文章
- My interested stuff(2008-07-10)
- 计算机对英语口语考试成绩,英语口语考试面对“电脑考官” 有何临场技巧
- QT实现绘制3D基本形状
- pymysql的使用(笔记)
- 记录一次centos的双网卡绑定
- linux 内核 报错,根据epc定位linux内核报错.pdf
- 操作系统实验报告 实验2 进程管理(答案全)
- 记录4 最近贺题时做的题 cf611e,cf873f,cf264d,cf1320d,cf1438c,hdu6833,hdu3602,cf1187g,cf1051e,cf925d,cf840c,etc
- c语言中文网vip所有资料,C语言中文网vip教程11.9
- 操作系统进程通信实验
- Arduino功率计:测量电压、电流和功耗
- SpringAOP:连接点和切点的区别
- 0到100之间的阶乘linux算法,零基础学算法-阶乘
- Gullo’s Hosting保加利亚NAT VPS评测
- 水星路由器 Mercury MER1200G刷机教程(不需要编程器)
- 1050: [HAOI2006]旅行comf
- scikit-learn学习之K-means聚类算法与 Mini Batch K-Means算法
- Scrapy中的item和pipline
- 计算机网络6 应用层
- 华为让全球震惊:5G基站出货已过万
热门文章
- html 字体思源_CSS3嵌入字体@font-face调用字体(思源宋体regula/PingFang SC/ttf/woff)...
- 《图解设计模式》读书笔记
- 如何截取QQ密码和聊天内容、去掉QQ广告栏、添加QQ尾巴
- 如何下载matlab安装包_MATLAB安装时应该选择哪些模块
- 群晖NAS详细教程 DSM6.1.7版本(亲测有效)传统BIOS
- python爬虫简历项目怎么写_python爬虫简历
- The program ‘roscore‘ is currently not installed 解决办法
- GWR4 软件输入数据制作
- VISIO——word中插入visio图片 图片边缘空白裁剪
- 《软件工程与实践》第三版 软工导论知识梳理总结