Restit TemplateをHttp Clientに置き換えてみますか?


@RestController
public class DeptControllerConsumer {

    private static final String REST_URL_PREFIX = "http://localhost:8001";

    @Autowired
    private RestTemplate restTemplate;

    @RequestMapping(value="/consumer/dept/add")
    public boolean add(Dept dept)
    {
        return restTemplate.postForObject(REST_URL_PREFIX+"/dept/add", dept, Boolean.class);
    }

    @RequestMapping(value="/consumer/dept/get/{id}")
    public Dept get(@PathVariable("id") Long id)
    {
        return restTemplate.getForObject(REST_URL_PREFIX+"/dept/get/"+id, Dept.class);
    }

    @SuppressWarnings("unchecked")
    @RequestMapping(value="/consumer/dept/list")
    public List<Dept> list()
    {
        return restTemplate.getForObject(REST_URL_PREFIX+"/dept/list", List.class);
    }

}

//   restTemplate  restful           。
// (url, requestMap, ResponseBean.class)          
// REST    、    、HTTP             。

  • pomに
  • を追加します。
    <dependency>
    	<groupId>org.springframework.bootgroupId>
    	<artifactId>spring-boot-starter-webartifactId>
    dependency>
    
  • 起動クラスに
  • を追加します。
    @Bean
    	public RestTemplate getRestTemplate(){
    		return new RestTemplate();
    	}
    	@Bean
    	public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
    		SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
    		factory.setReadTimeout(5000);//   ms
    		factory.setConnectTimeout(5000);//   ms
    		return factory;
    	}
    
  • 要求ヘッダを設定する方式
  • //headers
    HttpHeaders head = new HttpHeaders();
    //        
    MediaType mediaType = MediaType.parseMediaType("application/json;charset=UTF-8 ");
    head.setContentType(mediaType);
    head.add("api-version", "1.0");
     //body
    MultiValueMap<String, String> requestBody = new LinkedMultiValueMap<>();
    requestBody.add("roundid", "1");
    //HttpEntity
    HttpEntity<MultiValueMap> requestEntity = new HttpEntity<MultiValueMap>(requestBody, head);
    RestTemplate restTemplate = new RestTemplate();
    //post
    ResponseEntity<String> responseEntity = restTemplate.postForEntity("http://xxx", requestEntity, String.class);
    System.out.println(responseEntity.getBody());