JAVA(자바)를 이용한 JSON 데이터 보내기 응답 받기 . HTTP POST webhook이용
지난번에 JSON 데이터를 만들어봤는데요.
이번에는
URL를 통해 JSON 데이타를 전송하고
서버로부터 정상유무 데이터를 응답 받기를 해보려고 합니다.
주로 사용하는 간단한 방법으로 구현했습니다.
JSON 데이타는 지난번에 만들 소스를 편집해서 활용합니다. ^^;;
Java에 내장된 HttpURLConnection을 이용해서 POST 방식으로 전송합니다.
프로그램 완성후에 테스트를 위해서
JSON 데이타를 받아주는 Web서버가 있어야 되겠죠. ^^;;
Springboot를 이용해 Web Server 만들면 될 거예요.
하지만
Web서버의 기능 테스트가 아니라
내가 만든 JSON 데이터가 정상적으로 서버로 전송되는지
서버에서 받은 JSON데이타가 정확히 표시되는지 확인만 필요할 경우에는
굳이 시간 내서 웹서버를 만들 필요 없이
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(); } } } |
감사합니다.