一、环境
1.idea 2018.1
2.maven 3.3.3
3.jdk1.8
二、在pom.xml中加入坐标
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
三、将RestTemplate注入
package com.ygq.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
/**
* RestTemplate配置
*/
@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
return new RestTemplate(factory);
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setReadTimeout(5000);//ms
factory.setConnectTimeout(15000);//ms
return factory;
}
}
四、发送http请求
要求:发送以下格式的GET请求到某URL
{
"head": {
"wsid": "AAAAA",
"log_id": "405av95f-b0e6-43b2-b274-3343b4eeee20",
"sendtime": "20200729101227"
},
"body": {
"doccode":"123123123",
"subtypes":[
{
"subtype":"AAAA01"
},
{
"subtype":"AAAA02"
}
]
}
}
@Autowired
private RestTemplate restTemplate;
public void getHttp(){
List<String> list = new ArrayList<>();
list.add(0, "AAAA01");
list.add(1, "AAAA02");
//设置请求体
HashMap<String, Object> requestBody = new HashMap<>();
requestBody.put("doccode", doccode);
requestBody.put("subtypes", list);
HashMap<String, Object> requestHead = new HashMap<>();
requestHead.put("wsid", "I_000017");
requestHead.put("log_id", uuid.uuid());
requestHead.put("sendtime", DateUtil.stampDate(new Date()));
//将数据转成Jason类型
HashMap<String, Object> request = new HashMap<>();
request.put("head", requestHead);
request.put("body", requestBody);
String body = JsonUtils.transferToJson(request);
//设置请求头
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setContentType(MediaType.parseMediaType("application/json; charset=UTF-8"));//数据编码格式--防止中文乱码
///在请求头中也可以设置相关参数和配置,本文不再赘述
HttpEntity<String> requestEntity = new HttpEntity<>(body, requestHeaders);
ResponseEntity<String> exchange = restTemplate.exchange("http:localhost:8081/helllo/a.action", HttpMethod.GET, requestEntity, String.class);
}
exchange对象就可以获取请求相应的数据(包含请求头请求状态请求体等,具体的可以自己查看,本文不再赘述)。