728x90
반응형
#스프링 HttpEntity, HttpHeaders 클래스 MultiValueMap, LinkedMultiValueMap, RestTemplate 사용 방법
#HTTP요청시 Get방식은 요청하는 자원을 URL에 뒤에 보내는 반면 POST방식은 URL에 붙이지 않고 따로 본문 데이터(Body)를 만들어 보냅니다.
1.HTTP 헤더(Header)를 생성합니다.
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("header-key", "HttpHeaders");
2.HTTP 본문(Body)를 생성합니다.
-MultiValueMap = 일반적인 HashMap과 다르게 키의 중복이 허용됩니다.
-LinkedMultiValueMap = Linked가 붙으면 순서가 보장됩니다.
-Body는 보통 key, value의 쌍으로 이루어지기 때문에 자바에서 제공해주는 MultiValueMap 타입을 사용해야합니다.
MultiValueMap<String, String> bodys = new LinkedMultiValueMap<>();
bodys.add("client_id", "kakaoApiId");
bodys.add("code", "CA007");
3.HTTP 요청을 하기위해 HTTP 헤더(Header)와 HTTP 본문(Body)을 HttpEntity 생성자의 파라미터로 전달하여 HttpEntity를 생성합니다.
-doc) HttpEntity(T body, MultiValueMap<String,String> headers)
HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<>(bodys, headers);
4.스프링에서 제공하는 RestTemplate 클래스를 사용해서 HTTP 요청을 보냅니다.
-doc) exchange(URI url, HttpMethod method, HttpEntity<?> requestEntity, Class<T> responseType)
URI uri = UriComponentsBuilder
.fromUriString("http://localhost:8080")
.path("/api/server/postApiTest")
.build()
.toUri();
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> responseEntity = restTemplate.exchange(
uri,
HttpMethod.POST,
entity,
String.class
);
728x90
반응형
댓글