개발을 하다 보면 외부 API를 연동할 일이 생긴다.
까먹지 않기 위해 끄적끄적!
예제코드
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
public class TestApi {
public JSONObject ApiTest(){
String data = "API 형식에 맞는 INPUT DATA";
String url = "호출URL";
JSONObject resultObject = new JSONObject(); // OUTPUT DATA 변수
try{
URL apiurl = new URL(url);
HttpURLConnection conn = (HttpURLConnection)apiurl.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("APIKey", ""); // API 보안키
conn.setRequestProperty("Content-type","application/json");
conn.setRequestProperty("Accept","application/json");
conn.setDoInput(true);
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
wr.write(data);
wr.flush();
wr.close();
StringBuilder sb = new StringBuilder();
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { // 200
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
String line;
while ((line = br.readLine()) != null) {
sb.append(line).append("");
}
br.close();
}else {
sb.append("{\"CODE\" : \""+conn.getResponseCode()+"\"");
sb.append(", \"REASON\" : \""+conn.getResponseMessage()+"\"}");
}
JSONParser jsonParser = new JSONParser();
resultObject = (JSONObject)jsonParser.parse(sb.toString());
} catch (Exception e){
e.printStackTrace();
}
return resultObject;
}
}
설명
data, url, 메소드 return값은 각자 형식에 맞게 설정!
setRequestMethod : GET, POST 요청방식 설정
setRequestProperty : Request header 값 설정
setDoInput : InputStream으로 서버로부터 응답을 받겠다는 옵션.
setDoOutput : OutputStream으로 데이터를 넘겨주겠다는 옵션.
getResponseCode가 정상일땐 output을 받고, 아닐경우! 응답상태와 응답메세지 받기! 😁
'IT > Java' 카테고리의 다른 글
JAVA 용어정리 (0) | 2021.09.16 |
---|---|
[자바] jsoup을 이용하여 웹 크롤링 구현하기 (0) | 2021.07.20 |
[자바] ArrayList / LinkedList / ArrayList 에 어떠한 클래스 든 다 저장하고 싶은 경우 (0) | 2021.06.01 |
[자바] 상속/오버라이딩 (0) | 2021.06.01 |
[자바] 싱글톤(Sington) (0) | 2021.05.31 |