개발을 하다 보면 외부 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을 받고, 아닐경우! 응답상태와 응답메세지 받기! 😁

+ Recent posts