MultiValueMap, RestTemplate, HttpEntity 이용하기

문자발송 코드 짜다가.. 까먹을까봐 정리해둠.


MultiValueMap parameters 에 파라미터 값들을 담고

(multipart/form-data 가 있는 경우는 MultiValueMap<String, Object> 로 하면 되는지는 테스트해봐야함)


HttpHeaders headers 에 Content-Type 정보와 클라이언트키값(api key)값을 담는다.

Content-Type 은 두 가지로 나뉘는데 RestTemplate을 사용하면 알아서 정해진다고 한다.

1
2
headers.add("Content-Type""application/x-www-form-urlencoded; charset=UTF-8"); //전부다 String형일 때. RestTemplate 쓰면 생략가능
headers.add("Content-Type""multipart/form-data; boundary=----WebKitFormBoundary8UhbmC4vAvBxT6z3"); //multipart/form-data 있는 경우 사용. RestTemplate 쓰면 생략 가능
cs



위 parameters 와 headers 를 HttpEntity<> request 에 담는다.

위에서 MultiValueMap을 <String, String>으로 선언했기 때문에 HttpEntity<MultiValueMap<String, String>> 이다.


RestTemplate.postForObject() 을 실행할 때 URI, request, String.class 변수로 넘긴다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
MultiValueMap<StringString> parameters = new LinkedMultiValueMap<>();
 
parameters.add("send_phone""12341234");
parameters.add("dest_phone""01012345678");
parameters.add("msg_body""단문 문자 테스트");
parameters.add("subject""문자 제목");
 
HttpHeaders headers = new HttpHeaders();
//headers.add("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); //전부다 String형일 때. RestTemplate 때문에 생략가능
//headers.add("Content-Type", "multipart/form-data; boundary=----WebKitFormB~~3"); //multipart/form-data 있는 경우 사용. RestTemplate 때문에 생략 가능
headers.add("x-waple-authorization""API키값");
 
HttpEntity<MultiValueMap<StringString>> request = new HttpEntity<>(parameters, headers);
 
RestTemplate rest = new RestTemplate();
String result = rest.postForObject(new URI("http://api.openapi.io/ppurio/1/message/mms/API스토어ID"), request, String.class);
//결과 {“result_code”:”200”,”cmid”:”20130314163439459”}
 
// 결과값에 따른 처리
JSONObject feedback = (JSONObject) new JSONParser().parse(result);
String resultCode = (String) feedback.get("result_code");
 
cs




참고 : 

http://www.apistore.co.kr/api/apiView.do?service_seq=151

http://blog.saltfactory.net/java/post-multipart-form-data-using-resttemplate-in-spring.html

+ Recent posts