使用spring的RestTemplate的post方法调用其他服务器的接口,引入的是
import org.springframework.web.client.RestTemplate;
第一步 创建RestTemplate对象
RestTemplate restTemplate = new RestTemplate(); // 如果不设置requestFactory ,默认为true的话 如果返回错误,就无法正常的接收错误信息(大概这个意思,具体还没搞懂) SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); requestFactory.setOutputStreaming(false); restTemplate.setRequestFactory(requestFactory);
第二步 创建请求对象
// 设置请求头 HttpHeaders requestHeaders = new HttpHeaders(); requestHeaders.add("Content-Type", "application/json"); // 请求体要用HttpEntity包住,泛型为请求体的类型 HttpEntity<Map> httpEntity = new HttpEntity<Map>(map, requestHeaders);
第三步 根据需要是否接收返回的错误信息
restTemplate.setErrorHandler(new ResponseErrorHandler() { @Override public boolean hasError(ClientHttpResponse response) throws IOException { System.out.println("报错了......"); // 如果返回true,则调用handleError方法,返回false 不调用 return true; } @Override public void handleError(ClientHttpResponse response) throws IOException { System.out.println(response.getStatusText()); System.out.println(response.getStatusCode()); System.out.println(response.getBody()); } });
第四步 调用服务
SyncRoleResDto syncRoleResDto = restTemplate.postForObject("https://accounts.sih.cq.cn/api/role/syncRole?appCode=vur0q6o3ibbyvr8bb33o", httpEntity, SyncRoleResDto.class);