๐Ÿ“• Language/Java

[Java] Restful api ์‹ค์ œ ์‚ฌ์šฉ ์˜ˆ์ œ

a n u e 2022. 2. 10. 08:52

ํƒ€ ์‹œ์Šคํ…œ์˜ API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์‹ ํ–ˆ๋˜ ์‚ฌ์šฉ ์˜ˆ์ œ์ด๋‹ค.

POST๋ฐฉ์‹์ด๋ฉฐ, ๋ฐ์ดํ„ฐ๋Š” JsonObject๋ฅผ ๋งŒ๋“œ๋Š” ๋ถ€๋ถ„์€ ์‹ค์ œ ์šด์˜ ์†Œ์Šค์—ฌ์„œ ์˜คํ”ˆํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒbody์ชฝ์— String์™ธ์—, Json Obect๊ฐ€ ์ค‘์ฒฉํ•˜์—ฌ ๋“ค์–ด๊ฐ€์žˆ์–ด์„œ ์• ๋ฅผ ๋จน์—ˆ๋˜ ๊ธฐ์–ต์ด ์žˆ๋‹ค.

 

private void restApiCallPost(String sendUrl, String token, String param, JSONObject jsonObject)
{
    String[] returnData = new String[2];
    HttpURLConnection con = null;
    try {
        URL url = new URL(sendUrl); //API URL ์ž…๋ ฅ
        con = (HttpURLConnection) url.openConnection();
        con.setConnectTimeout(10000); //connection timeout - 10์ดˆ
        con.setReadTimeout(10000); //contents ์กฐํšŒ timeout - 10์ดˆ
        con.setRequestMethod("POST"); //์š”์ฒญ๋ฐฉ์‹์„ ์„ ํƒํ•œ๋‹ค
        con.setRequestProperty("System-ID", param); 
        con.setRequestProperty("Authorization", token); //API KEY ์„ค์ •
        con.setRequestProperty("Content-Type", "application/json;charset=UTF-8"); //ํ•ด๋‹น ํƒ€์ž…์œผ๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก
        con.setRequestProperty("Accept", "application/json"); //์„œ๋ฒ„ Response Data ํƒ€์ž…์„ ์ง€์ •ํ•˜์—ฌ ์š”์ฒญ
        con.setDoInput(true);  //InputStream์œผ๋กœ ์‘๋‹ต ๋ฐ์ดํ„ฐ ๋ฐ›๊ฒ ๋‹ค๋Š” ์˜ต์…˜
        con.setDoOutput(true); //OutputStream์œผ๋กœ ๋ฐ์ดํ„ฐ ์ „์†กํ•˜๊ฒ ๋‹ค๋Š” ์˜ต์…˜
        con.setUseCaches(false);
        con.setDefaultUseCaches(false);

        DataOutputStream wr = new DataOutputStream(con.getOutputStream());
        byte[] input = jsonObject.toString().getBytes("utf-8"); //์„œ๋ฒ„ ์ „์†ก ๋ฐ์ดํ„ฐ
        wr.write(input); 
        wr.flush();
        wr.close();

        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); 
        String inputLine; 
        StringBuffer response = new StringBuffer(); 
        while ((inputLine = in.readLine()) != null) 
        {
            response.append(inputLine); 
        } 
        in.close(); 

        if(con.getResponseCode() == 200) //SUCCESS CODE
        {
            returnData[0] = "SUCCESS";
            returnData[1] = "REQUEST DATA:"+jsonObject+"\nRESPONSE DATA:"+response.toString();
        }else //ERROR CODE
        {
            returnData[0] = "ERROR";
            returnData[1] = "REQUEST DATA:"+jsonObject+"\nRESPONSE DATA:"+response.toString();
        }
    } catch (MalformedURLException e) {
        returnData[0] = "ERROR MalformedURL";
        returnData[1] = e.getMessage();
    } catch (IOException e) {
        returnData[0] = "ERROR IO";
        returnData[1] = e.getMessage();
        e.printStackTrace();
    } catch (Exception e) {
        returnData[0] = "ERROR ETC";
        returnData[1] = e.getMessage();
    }
}