반응형
안녕하세요 :>
오늘은 HttpURLConnection을 이용하여 외부 API를 호출해보려고합니다.
저 같은 경우에는 공통 메서드로 사용하기 위해 해당 url과 data를 받는 메서드로 만들었습니다.
POST 방식으로 호출하는 방법입니다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.*;
public Map<String, Object> sendPostData(String targetUrl, Map<String, Object> param) throws Exception {
Map<String, Object> resultMap = new HashMap<String, Object>();
BufferedReader in = null;
try {
URL url = new URL(targetUrl);
// Map에 담아온 데이터 셋팅해주기
StringBuilder postData = new StringBuilder();
for(Map.Entry<String, Object> params: param.entrySet()) {
if(postData.length() != 0) postData.append("&");
postData.append(URLEncoder.encode(params.getKey(), "UTF-8"));
postData.append("=");
postData.append(URLEncoder.encode(String.valueOf(params.getValue()), "UTF-8"));
}
byte[] postDataBytes = postData.toString().getBytes("UTF-8");
// url 연결
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//GET방식인지, POST방식인지
conn.setRequestMethod("POST");
//받는 API에 따라 맞는 content-Type을 정해주면된다.
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
// content-length로 보내는 데이터의 길이
conn.setRequestProperty("Content-Length", String.valueOf(postDataBytes.length));
// 서버에서 온 데이터를 출력할 수 있는 상태인지
conn.setDoOutput(true);
// POST 호출
conn.getOutputStream().write(postDataBytes);
in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
String inputLine;
StringBuffer response = new StringBuffer();
while((inputLine = in.readLine()) != null) { // response 출력
response.append(inputLine);
}
String jsonStr = response.toString();
JSONParser parser = new JSONParser();
resultMap = (Map<String, Object>)parser.parse(jsonStr);
} catch (Exception e) {
throw e;
} finally {
if ( in != null ){
in.close();
}
}
return resultMap;
}
GET 방식으로 호출하는 방법
2021.04.05 - [Java] - JAVA HttpURLConnection Get 방식으로 처리하기
글이 도움되었다면 구독과 공감 부탁드립니다👍👍
반응형
'Java' 카테고리의 다른 글
[JAVA ] File Upload 하는 방법 (0) | 2021.04.09 |
---|---|
[Hybrid App / Web] JAVA File Download (2) | 2021.04.08 |
[JAVA] HttpURLConnection Get 방식으로 처리하기 (0) | 2021.04.05 |
[javascript] 공백 제거 함수 trim / replace (0) | 2021.04.04 |
[프로그래머스] 신규 아이디 추천 JAVA_LV.1 (0) | 2021.04.03 |