본문 바로가기
IT/PROGRAM

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

by SidePower 2021. 3. 17.

 

지난번에 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();
    }

    }
}

 

 

감사합니다.

반응형

댓글