目录
- HttpClient系列(一),JDK HttpURLConnection
- HttpClient系列(二),Apache HttpClient
- HttpClient系列(三),SpringBoot RestTemplate
- HttpClient系列(四),Vert.x HttpClient
- HttpClient系列(五),Netty HttpClient
正文
RestTemplate是Spring官方提供REST Client。以一种更优雅的方式发送Http请求。其底层也是基于对HttpURLConnection的封装。
那么既然是对HttpURLConnection的封装,使用起来肯定就更简单了。请看一个GET请求:
RestTemplate restTemplate = new RestTemplate();
String content = restTemplate.getForObject("http://www.baidu.com", String.class);
System.out.println(content);
再看POST请求:
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
formData.add("page", "1");
formData.add("count", "5");
HttpEntity<MultiValueMap<String,String>> request = new HttpEntity<>(formData, headers);
String content = restTemplate.postForObject("https://api.apiopen.top/getWangYiNews", request, String.class);
System.out.println(content);
这里特别提一下HttpEntity的作用。HttpEntity是用来设置POST传递的参数,笔者这里模拟表单提交,通过MultiValueMap构造一个简直对的表单,然后传递给目标接口。特别要注意的是,需要设置好header的ContentType类型,否则会导致参数传递失败。