网站首页 > 技术文章 正文
利用@bean注解,首先创建ClientHttpRequestFactory实例,再创建RestTemplate实例。代码如下:
@Configuration
public class RestConnectionConfigure {
/**
* 单位毫秒
*/
private static final int READ_TIMEOUT = 10000;
private static final int CONNECT_TIMEOUT = 10000;
@Bean(name = "clientHttpRequestFactory")
public ClientHttpRequestFactory simpleClientHttpRequestFactory(ProxyConfig proxyConfig) {
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setReadTimeout(READ_TIMEOUT);
factory.setConnectTimeout(CONNECT_TIMEOUT);
if (proxyConfig != null && !StringUtils.isEmpty(proxyConfig.getHost())) {
factory.setProxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyConfig.getHost(), proxyConfig.getPort())));
}
return factory;
}
@Bean
public RestTemplate restTemplate(@Autowired ClientHttpRequestFactory clientHttpRequestFactory){
RestTemplate restTemplate = new RestTemplate(clientHttpRequestFactory);
restTemplate.getMessageConverters().add(new StringHttpMessageConverter(Charset.forName("UTF-8")));
restTemplate.getMessageConverters().add(new DocMappingJackson2HttpMessageConverter());
return restTemplate;
}
}
其中proxyConfig是连接代理配置,host为代理服务器IP,port为端口
@Configuration
@ConfigurationProperties(prefix = "proxy")
public class ProxyConfig {
String host;
int port;
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
}
创建代理服务的配置文件如下:(如果使用代理的话)
proxy:
host: xxx.xxx.xx.yy
port: 3128
DocMappingJackson2HttpMessageConverter类为自定义的HttpMessageConverter,用来处理text/html 和text/plain的数据请求。
public class DocMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter {
public DocMappingJackson2HttpMessageConverter(){
List<MediaType> mediaTypes = new ArrayList<>();
mediaTypes.add(MediaType.TEXT_PLAIN);
mediaTypes.add(MediaType.TEXT_HTML);
setSupportedMediaTypes(mediaTypes);
}
}
RestTemplate默认使用HttpUrlConnection来进行网络请求。参考下面的方式替换成HttpClient或者OkHttp3Client,使用不同的HttpRequestFactory即可。
new RestTemplate(new SimpleClientHttpRequestFactory());
new RestTemplate(new HttpComponentsClientHttpRequestFactory());
new RestTemplate(new OkHttp3ClientHttpRequestFactory());
猜你喜欢
- 2024-09-08 精讲RestTemplate第7篇-自定义请求失败异常处理
- 2024-09-08 java实现调用http请求的几种常见方式
- 2024-09-08 深度原理学习——白话TCP与HTTP的keep–alive机制
- 2024-09-08 有了WebClient还在用RestTemplate?
- 2024-09-08 Spring Boot外部接口调用:使用RestTemplate与WebClient操控HTTP
- 2024-09-08 Java服务优雅上下线(java项目如何上线)
- 2024-09-08 Spring 框架里的 HTTP 调用,RestTemplate 还是 WebClient
- 2024-09-08 微服务中如何使用RestTemplate优雅调用API(详细分析)
- 2024-09-08 真不是吹,Spring 里这款牛逼的网络工具库你可能没用过
- 2024-09-08 Java工具类封装微服务间HTTP通信(java md5工具类)
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)