龙空技术网

RestTemplate技术预研——OkHttp

关山飞渡3M2D 1055

前言:

今天咱们对“htmlrest”都比较注重,看官们都想要分析一些“htmlrest”的相关文章。那么小编也在网摘上收集了一些有关“htmlrest””的相关知识,希望看官们能喜欢,兄弟们一起来学习一下吧!

1.认识RestTemplate

RestTemplate是Spring提供的用于访问RESTful服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。RestTemplate默认依赖JDK提供http连接的能力(HttpURLConnection),也可以通过替换为例如 Apache HttpComponents、Netty或OkHttp等其它HTTP 客户端,OkHttp的性能优越

2.工程中引入OkHttp依赖

<!‐‐ okhttp3依赖 ‐‐><dependency>	<groupId>com.squareup.okhttp3</groupId>	<artifactId>okhttp</artifactId>	<version>3.9.1</version></dependency>
3.添加RestTemplate初始化
@Beanpublic RestTemplate restTemplate() {	return new RestTemplate(new OkHttp3ClientHttpRequestFactory())  ;}
4.使用RestTemplate获取百度的网页内容
@SpringBootTest@RunWith(SpringRunner.class)@Slf4jpublic class RestTemplateTest {	@Autowired	RestTemplate restTemplate;	//获取网页内容	@Test	public void gethtml(){		String url = ";;		ResponseEntity<String> forEntity = restTemplate.getForEntity(url, String.class);		String body = forEntity.getBody();		System.out.println(body);	}}

通过测试发现可以成功获取百度的网页内容

5.网页内容中中文乱码解决方案

原因:

当RestTemplate默认使用String存储body内容时默认使用ISO_8859_1字符集。

解决:

配置StringHttpMessageConverter 消息转换器,使用utf-8字符集。

修改RestTemplate的定义方法:

@Beanpublic RestTemplate restTemplate() {	RestTemplate restTemplate = new RestTemplate(new OkHttp3ClientHttpRequestFactory());	//消息转换器列表	List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters();	//配置消息转换器StringHttpMessageConverter,并设置utf‐8	messageConverters.set(1,new StringHttpMessageConverter(StandardCharsets.UTF_8));//支持中文字符集,默认ISO‐8859‐1,支持utf‐8	return restTemplate;}

标签: #htmlrest