IT/PROGRAM

JAVA(자바)를 이용한 JSON 데이터 보내기 응답 받기 . HTTP POST webhook이용

SidePower 2021. 3. 17. 06:00

 

지난번에 JSON 데이터를 만들어봤는데요. 

 

이번에는

URL를 통해 JSON 데이타를 전송하고

서버로부터 정상유무 데이터를 응답 받기를 해보려고 합니다.

 

주로 사용하는 간단한 방법으로 구현했습니다.

 

JSON 데이타는 지난번에 만들 소스를 편집해서 활용합니다. ^^;;

 

JSON 데이터 만들기 설명 바로가기

 

 

Java에 내장된 HttpURLConnection을 이용해서 POST 방식으로 전송합니다.

 

프로그램 완성후에 테스트를 위해서

JSON 데이타를 받아주는 Web서버가 있어야 되겠죠. ^^;;

Springboot를 이용해 Web Server 만들면 될 거예요.

 

하지만

Web서버의 기능 테스트가 아니라

내가 만든 JSON 데이터가 정상적으로 서버로 전송되는지

서버에서 받은 JSON데이타가 정확히 표시되는지 확인만 필요할 경우에는

 

굳이 시간 내서 웹서버를 만들 필요 없이

 webhook.site 를 이용해서 바로 확인을 할 수가 있습니다.

 

webhook.site에 대해 간단하게 알아볼게요.

 

만든 프로그램 기능만 잠깐 확인하고 푼데

웹서버까지 만들어야 되는 고생은 하기 싫을 때가 많을 거예요.ㅋ

저는 이럴 때 자주 이용하고 있는데요. 유용하게 쓸 일이 많을 거예요.

 

 

webhook.site 사이트에 접속합니다.

webhook.site 바로가기

 

사이트 접속하시면 바로 URL과 이메일이 생성됩니다.

Your unique URL

your unique email address

 

내가 전송한 데이터를 받아주는

나의 전용 웹서버와 나의 전용 이메일이 자동으로 만들어집니다.

이 URL를 이용해서 맘대로 전송하고 확인할 수 있습니다.

 

왼쪽 파란색 화살표를 보시면

Waiting for first request...라고 표시되어 있네요.

요청을 계속 기다리고 있는 거 같습니다. ㅋ

 

 

 Your unique URL 복사

프로그램 소스에 적용해서 테스트를 해봤습니다.

 

https://webhook.site/3c6e5f16-c130-4473-b763-25c152b20930 

 

Raw Contnet

내가 만든 JSON 데이터가 보기 좋게 표시되어 있네요. ^^

 

 

* JSON http 전송하기 샘플 Source

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;


public class Two2 {

    public static void main(String[] args) {

    //JSON 데이터 만들기 

    JSONObject jsonob = new JSONObject();
    JSONArray jsonarr = new JSONArray();

    for(int i=1;i<3;i++) {

        JSONObject data = new JSONObject();

        data.put("이름", "인간_"+i);
        data.put("나이",10+i);
        data.put("주소", "서울 중앙로 "+i+"");
        jsonarr.add(data);

    }

    jsonob.put("사람들", jsonarr);

    System.out.println(jsonob);


    //JSON 데이터 HTTP POST 전송하기 

    try
    {

        String host_url = "https://webhook.site/3c6e5f16-c130-4473-b763-25c152b20930";
        HttpURLConnection conn = null;

        URL url = new URL(host_url);

        conn = (HttpURLConnection)url.openConnection();

        conn.setRequestMethod("POST");//POST GET
        conn.setRequestProperty("Content-Type", "application/json");

        //POST방식으로 스트링을 통한 JSON 전송
        conn.setDoOutput(true);
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream()));

        bw.write(jsonob.toString());
        bw.flush();
        bw.close();

        //서버에서 보낸 응답 데이터 수신 받기
        BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String returnMsg = in.readLine();
        System.out.println("응답메시지 : " + returnMsg );

        //HTTP 응답 코드 수신 
        int responseCode = conn.getResponseCode();
       if(responseCode == 400) {
            System.out.println("400 : 명령을 실행 오류");
       } else if (responseCode == 500) {
            System.out.println("500 : 서버 에러.");
        } else { //정상 . 200 응답코드 . 기타 응답코드 
            System.out.println(responseCode + " : 응답코드임");
        }

    }catch(IOException ie) {
        System.out.println("IOException " + ie.getCause());
        ie.printStackTrace();
    }catch(Exception ee) {
        System.out.println("Exception " + ee.getCause());
        ee.printStackTrace();
    }

    }
}

 

 

감사합니다.

반응형