RestTemplate调用rest接口
应用层:HTTP
传输层:TCP(传输控制协议) 保证通信数据有序可靠 端口号:80
网络层:IP地址 DNS域名服务器解析域名
数据链路层&物理层:完成数据传输
一次http请求的过程:
1,域名解析为ip地址
2,向服务器ip+端口号建立TCP连接 连接成功
3,发送http请求,并得到响应
4,浏览器渲染并展示HTML
URL的组成http://www.example.com/
http: schema协议 可以省略(浏览器默认的)
域名后面可以跟端口号,默认80可以省略。
最后的斜杠表示服务器根路径下的资源。
报文含义参考RFC文档。
RestTemplate调用rest接口
首先需要注入resttemplate,建立一个config文件:
1:Apache HttpComponents (httpclient)
2:Netty(网络通信库)
3:OkHttp
//通过构造方法更换底层的执行引擎。
return new RestTemplate();//默认是jdk的HttpUrlConnection;
return new RestTemplate(new HttpComponentsClientHttpRequestFactory());//这个是httpclient,需要导入依赖。
@Configuration
public class RestTemplateConfig {
@Autowired
private RestTemplateBuilder restTemplateBuilder;
@Bean
public RestTemplate restTemplate() {
return restTemplateBuilder.setConnectTimeout(Duration.ofSeconds(120000))
.setReadTimeout(Duration.ofSeconds(150000)).build();
}
}
1:采用restTemplate.postForEntity直接处理string格式的json字符串:
public void sendMailByCM01(){
String data = "{\n" +
" \"receivers\":\"10256056\",\n" +
" \"subject\":\"测试配置平台邮件\",\n" +
" \"mailMsg\":\"三月二十九日天气晴朗。\",\n" +
" \"mailType\": \"text\"\n" +
"}";
String url = "http://10.7.224.163:8888/mail";
ResponseEntity<String> objectResponseEntity = restTemplate.postForEntity(url, data, String.class);
System.out.println(objectResponseEntity.getBody());
2:restTemplate.postForEntity采用实体bean传参:(方便书写代码可以将set方法的返回值设置为实例本身。)
@Data
@Accessors(chain=true)
public class MailBean {
private String receivers;
private String subject;
private String mailMsg;
private String mailType;
}
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.setContentType(MediaType.APPLICATION_JSON);
MailBean mailBean = new MailBea