From d6df56b7b7f4b52d8a1a6d68e180a81bb5a5eba1 Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Fri, 5 Dec 2025 12:44:06 +0900 Subject: [PATCH] =?UTF-8?q?5585=20=20api=20=EC=98=A4=EB=A5=98=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jsp_example_inqry_templates_detail_r1.jsp | 164 ++++++------- .../jsp_example_inqry_templates_list_r1.jsp | 156 ++++++------ .../sample_mjon/jsp_example_send_at_r1.jsp | 228 +++++++++++------- 3 files changed, 291 insertions(+), 257 deletions(-) diff --git a/src/main/webapp/sample_mjon/jsp_example_inqry_templates_detail_r1.jsp b/src/main/webapp/sample_mjon/jsp_example_inqry_templates_detail_r1.jsp index 3f5f255..e37dd9b 100644 --- a/src/main/webapp/sample_mjon/jsp_example_inqry_templates_detail_r1.jsp +++ b/src/main/webapp/sample_mjon/jsp_example_inqry_templates_detail_r1.jsp @@ -15,95 +15,87 @@ <%@page import="java.util.Map"%> <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <% - try{ - //기본 설정값 - final String encodingType = "UTF-8"; - final String boundary = "____boundary____"; - - //비즈 아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 bizId와 apiKey 값을 적어서 사용 - //실제서비스용 - final String accessKey = "3429312e6a2c732188d4cc7d15d8a1baa01d8d91"; //발급받은 api key - - //테스트용 - //String bizId = request.getParameter("p_bizId"); //비즈 아이디 - //String apiKey = request.getParameter("p_apiKey"); //발급받은 api key + try{ + //기본 설정값 + final String encodingType = "UTF-8"; + final String boundary = "____boundary____"; - /******************** 전송 요청 URL ********************/ + + //비즈 아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 bizId와 apiKey 값을 적어서 사용 + //실제서비스용 + final String accessKey = "3429312e6a2c732188d4cc7d15d8a1baa01d8d91"; //발급받은 api key + //테스트용 + //String mberId = request.getParameter("p_mberId"); //문자온 로그인 아이디 + //String apiKey = request.getParameter("p_apiKey"); //발급받은 api key + + /******************** 전송 요청 URL ********************/ final String apiUrl = "http://119.193.215.98:8087/api/kakao/inqry/templates/detail"; //템플릿 상세 조회 API URL -// final String apiUrl = "http://localhost:8088/api/kakao/inqry/templates/detail"; //템플릿 상세 조회 API URL - - /******************** 전송 정보 ********************/ - //필수 값 - String p_senderKey = request.getParameter("p_senderKey"); //발신프로필키 - String p_templateCode = request.getParameter("p_templateCode"); //템플릿코드 - String p_mberId = request.getParameter("p_mberId"); //발신프로필키 - - Map params = new HashMap(); - - System.out.println("accessKey : "+ accessKey); //비즈 아이디 - System.out.println("mberId : "+ p_mberId); //비즈 아이디 - System.out.println("senderKey : "+ p_senderKey); //발신프로필키 - System.out.println("templateCode : "+ p_templateCode); //템플릿코드 - - - //기본 전송 데이터 - params.put("accessKey", accessKey); //비즈 아이디 - params.put("mberId", p_mberId); //비즈 아이디 - params.put("senderKey", p_senderKey); //발신프로필키 - params.put("templateCode", p_templateCode); //템플릿코드 - - //REST API 전송 - String result = ""; - - MultipartEntityBuilder builder = MultipartEntityBuilder.create(); - - builder.setBoundary(boundary); - builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); - builder.setCharset(Charset.forName(encodingType)); - - try{ - for(Iterator i = params.keySet().iterator(); i.hasNext();){ - String key = i.next(); - //전달값이 없는 경우 오류 - try{ - String value = params.get(key); - if(value != null) { - builder.addTextBody(key, value, ContentType.create("Multipart/related", encodingType)); - } - }catch(Exception ex){ - ex.printStackTrace(); - } - } - }catch(Exception ex){ - ex.printStackTrace(); - } - HttpEntity entity = builder.build(); - - HttpClient client = HttpClients.createDefault(); - HttpPost post = new HttpPost(apiUrl); - post.setEntity(entity); - - HttpResponse res = client.execute(post); - - if(res != null){ - BufferedReader in = new BufferedReader(new InputStreamReader(res.getEntity().getContent(), encodingType)); - String buffer = null; - while((buffer = in.readLine())!=null){ - result += buffer; - } - in.close(); - } - out.print(result); - - }catch(Exception e){ - out.print("{\"data\":{\"resultCode\":99,\"msg\":\"WRONG API METHOD\"}}"); - e.printStackTrace(); - } + //회원아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 mberId와 apiKey 값을 적어서 사용 + String p_senderKey = request.getParameter("p_senderKey"); //발신프로필키 + String p_templateCode = request.getParameter("p_templateCode"); //템플릿코드 + String p_mberId = request.getParameter("p_mberId"); //발신프로필키 - /**************** 템플릿 상세 조회 Response 예제 ******************/ - /* "resultCode": 결과코드, "objectList": 템플릿 상세 정보 */ - /* "msg": 결과 메시지, "templateCode": 템플릿코드, "templateName": 템플릿명 */ - /* "template": 템플릿 내용, "buttons": 버튼 정보, "quickReplies": 퀵 리플라이 */ + Map params = new HashMap(); + + //기본 전송 데이터 + params.put("accessKey", accessKey); //비즈 아이디 + params.put("mberId", p_mberId); //비즈 아이디 + params.put("senderKey", p_senderKey); //발신프로필키 + params.put("templateCode", p_templateCode); //템플릿코드 + + //REST API 전송 + String result = ""; + + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + builder.setBoundary(boundary); + builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); + builder.setCharset(Charset.forName(encodingType)); + + try{ + for(Iterator i = params.keySet().iterator(); i.hasNext();){ + String key = i.next(); + //전달값이 없는 경우 오류 + try{ + String value = params.get(key); + if(value != null) { + builder.addTextBody(key, value, ContentType.create("Multipart/related", encodingType)); + } + }catch(Exception ex){ + ex.printStackTrace(); + } + } + }catch(Exception ex){ + ex.printStackTrace(); + } + + HttpEntity entity = builder.build(); + + HttpClient client = HttpClients.createDefault(); + HttpPost post = new HttpPost(apiUrl); + post.setEntity(entity); + + HttpResponse res = client.execute(post); + + if(res != null){ + BufferedReader in = new BufferedReader(new InputStreamReader(res.getEntity().getContent(), encodingType)); + String buffer = null; + while((buffer = in.readLine())!=null){ + result += buffer; + } + in.close(); + } + out.print(result); + + }catch(Exception e){ + out.print("{\"data\":{\"resultCode\":99,\"msg\":\"WRONG API METHOD\"}}"); + e.printStackTrace(); + } + + /**************** 채널ID 조회 Response 예제 ******************/ + /* "resultCode": 결과코드, "objectList": 채널 목록 */ + /* "msg": 결과 메시지, "profileId": 프로필ID, "senderKey": 발신프로필키 */ + /* "phoneNumber": 핸드폰번호, "yellowId": 채널ID, "categoryName": 카테고리명 */ %> \ No newline at end of file diff --git a/src/main/webapp/sample_mjon/jsp_example_inqry_templates_list_r1.jsp b/src/main/webapp/sample_mjon/jsp_example_inqry_templates_list_r1.jsp index 9d51c9d..795e4c6 100644 --- a/src/main/webapp/sample_mjon/jsp_example_inqry_templates_list_r1.jsp +++ b/src/main/webapp/sample_mjon/jsp_example_inqry_templates_list_r1.jsp @@ -15,88 +15,86 @@ <%@page import="java.util.Map"%> <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <% - try{ - //기본 설정값 - final String encodingType = "UTF-8"; - final String boundary = "____boundary____"; - - //비즈 아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 bizId와 apiKey 값을 적어서 사용 - //실제서비스용 - final String accessKey = "3429312e6a2c732188d4cc7d15d8a1baa01d8d91"; //발급받은 api key - - //테스트용 - //String bizId = request.getParameter("p_bizId"); //비즈 아이디 - //String apiKey = request.getParameter("p_apiKey"); //발급받은 api key + try{ + //기본 설정값 + final String encodingType = "UTF-8"; + final String boundary = "____boundary____"; - /******************** 전송 요청 URL ********************/ + + //비즈 아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 bizId와 apiKey 값을 적어서 사용 + //실제서비스용 + final String accessKey = "3429312e6a2c732188d4cc7d15d8a1baa01d8d91"; //발급받은 api key + //테스트용 + //String mberId = request.getParameter("p_mberId"); //문자온 로그인 아이디 + //String apiKey = request.getParameter("p_apiKey"); //발급받은 api key + + /******************** 전송 요청 URL ********************/ final String apiUrl = "http://119.193.215.98:8087/api/kakao/inqry/templates/list"; //템플릿 목록 조회 API URL // final String apiUrl = "http://localhost:8088/api/kakao/inqry/templates/list"; //템플릿 목록 조회 API URL - - /******************** 전송 정보 ********************/ - //필수 값 - String p_senderKey = request.getParameter("p_senderKey"); //발신프로필키 - String p_mberId = request.getParameter("p_mberId"); //발신프로필키 - - Map params = new HashMap(); - - System.out.println("accessKey : "+ accessKey); - - //기본 전송 데이터 - params.put("mberId", p_mberId); //비즈 아이디 - params.put("accessKey", accessKey); //인증키 - params.put("senderKey", p_senderKey); //발신프로필키 - - //REST API 전송 - String result = ""; - - MultipartEntityBuilder builder = MultipartEntityBuilder.create(); - - builder.setBoundary(boundary); - builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); - builder.setCharset(Charset.forName(encodingType)); - - try{ - for(Iterator i = params.keySet().iterator(); i.hasNext();){ - String key = i.next(); - //전달값이 없는 경우 오류 - try{ - String value = params.get(key); - if(value != null) { - builder.addTextBody(key, value, ContentType.create("Multipart/related", encodingType)); - } - }catch(Exception ex){ - ex.printStackTrace(); - } - } - }catch(Exception ex){ - ex.printStackTrace(); - } - HttpEntity entity = builder.build(); - - HttpClient client = HttpClients.createDefault(); - HttpPost post = new HttpPost(apiUrl); - post.setEntity(entity); - - HttpResponse res = client.execute(post); - - if(res != null){ - BufferedReader in = new BufferedReader(new InputStreamReader(res.getEntity().getContent(), encodingType)); - String buffer = null; - while((buffer = in.readLine())!=null){ - result += buffer; - } - in.close(); - } - out.print(result); - - }catch(Exception e){ - out.print("{\"data\":{\"resultCode\":99,\"msg\":\"WRONG API METHOD\"}}"); - e.printStackTrace(); - } - /**************** 템플릿 목록 조회 Response 예제 ******************/ - /* "resultCode": 결과코드, "objectList": 템플릿 목록 */ - /* "msg": 결과 메시지, "templateCode": 템플릿코드, "templateName": 템플릿명 */ - /* "templateMessageType": 메시지타입, "status": 상태, "inspectionStatus": 검수상태 */ + //회원아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 mberId와 apiKey 값을 적어서 사용 + String p_senderKey = request.getParameter("p_senderKey"); //발신자 번호 + String p_mberId = request.getParameter("p_mberId"); //수신자 번호 + + Map params = new HashMap(); + + //기본 전송 데이터 + params.put("mberId", p_mberId); //비즈 아이디 + params.put("accessKey", accessKey); //인증키 + params.put("senderKey", p_senderKey); //발신프로필키 + + //REST API 전송 + String result = ""; + + MultipartEntityBuilder builder = MultipartEntityBuilder.create(); + + builder.setBoundary(boundary); + builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); + builder.setCharset(Charset.forName(encodingType)); + + try{ + for(Iterator i = params.keySet().iterator(); i.hasNext();){ + String key = i.next(); + //전달값이 없는 경우 오류 + try{ + String value = params.get(key); + if(value != null) { + builder.addTextBody(key, value, ContentType.create("Multipart/related", encodingType)); + } + }catch(Exception ex){ + ex.printStackTrace(); + } + } + }catch(Exception ex){ + ex.printStackTrace(); + } + + HttpEntity entity = builder.build(); + + HttpClient client = HttpClients.createDefault(); + HttpPost post = new HttpPost(apiUrl); + post.setEntity(entity); + + HttpResponse res = client.execute(post); + + if(res != null){ + BufferedReader in = new BufferedReader(new InputStreamReader(res.getEntity().getContent(), encodingType)); + String buffer = null; + while((buffer = in.readLine())!=null){ + result += buffer; + } + in.close(); + } + out.print(result); + + }catch(Exception e){ + out.print("{\"data\":{\"resultCode\":99,\"msg\":\"WRONG API METHOD\"}}"); + e.printStackTrace(); + } + + /**************** 채널ID 조회 Response 예제 ******************/ + /* "resultCode": 결과코드, "objectList": 채널 목록 */ + /* "msg": 결과 메시지, "profileId": 프로필ID, "senderKey": 발신프로필키 */ + /* "phoneNumber": 핸드폰번호, "yellowId": 채널ID, "categoryName": 카테고리명 */ %> \ No newline at end of file diff --git a/src/main/webapp/sample_mjon/jsp_example_send_at_r1.jsp b/src/main/webapp/sample_mjon/jsp_example_send_at_r1.jsp index 128cf32..23b722e 100644 --- a/src/main/webapp/sample_mjon/jsp_example_send_at_r1.jsp +++ b/src/main/webapp/sample_mjon/jsp_example_send_at_r1.jsp @@ -1,116 +1,160 @@ <%@page import="java.io.InputStreamReader"%> <%@page import="java.io.BufferedReader"%> -<%@page import="org.apache.http.client.entity.UrlEncodedFormEntity"%> -<%@page import="org.apache.http.client.methods.CloseableHttpResponse"%> +<%@page import="org.apache.http.HttpResponse"%> <%@page import="org.apache.http.client.methods.HttpPost"%> -<%@page import="org.apache.http.impl.client.CloseableHttpClient"%> <%@page import="org.apache.http.impl.client.HttpClients"%> -<%@page import="org.apache.http.message.BasicNameValuePair"%> -<%@page import="org.apache.http.NameValuePair"%> -<%@page import="java.nio.charset.StandardCharsets"%> -<%@page import="java.util.*"%> -<%@ page language="java" contentType="application/json; charset=UTF-8" pageEncoding="UTF-8"%> +<%@page import="org.apache.http.client.HttpClient"%> +<%@page import="org.apache.http.HttpEntity"%> +<%@page import="java.net.URLEncoder"%> +<%@page import="org.apache.http.entity.ContentType"%> +<%@page import="java.nio.charset.Charset"%> +<%@page import="org.apache.http.entity.mime.HttpMultipartMode"%> +<%@page import="org.apache.http.entity.mime.MultipartEntityBuilder"%> +<%@ page import="org.apache.http.message.BasicNameValuePair" %> +<%@page import="org.apache.http.entity.StringEntity"%> +<%@page import="org.apache.http.entity.ContentType"%> +<%@page import="java.net.URLEncoder"%> +<%@ page import="java.util.*" %> +<%@ page import="org.apache.http.impl.client.CloseableHttpClient" %> +<%@ page import="java.nio.charset.StandardCharsets" %> +<%@ page import="org.apache.http.client.entity.UrlEncodedFormEntity" %> +<%@ page import="org.apache.http.client.methods.CloseableHttpResponse" %> +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <% -response.setCharacterEncoding("UTF-8"); - -try { - // ===== 고정값(실서비스는 서버 보관) ===== - - // ===== 전송 URL ===== - // final String apiUrl = "http://119.193.215.98:8087/api/kakao/at/sendMsg"; - final String apiUrl = "http://119.193.215.98:8087/api/kakao/at/sendMsg"; -// final String apiUrl = "http://localhost:8088/api/kakao/at/sendMsg"; + try{ + //기본 설정값 + final String encodingType = "UTF-8"; + final String boundary = "____boundary____"; - String p_mberId = request.getParameter("mberId"); //사용자 ID - String p_apiKey = request.getParameter("accessKey"); //API KEY - - System.out.println("p_mberId : "+ p_mberId); - System.out.println("p_apiKey : "+ p_apiKey); - - // ===== 공통 파라미터 수신 (p_* / 비접두어 둘 다 허용) ===== - String senderKey = request.getParameter("p_senderKey"); if (senderKey == null) senderKey = request.getParameter("senderKey"); - String templateCode = request.getParameter("p_templateCode"); if (templateCode == null) templateCode = request.getParameter("templateCode"); - String callFrom = request.getParameter("p_callFrom"); if (callFrom == null) callFrom = request.getParameter("callFrom"); - String subMsgSendYn = request.getParameter("p_subMsgSendYn"); if (subMsgSendYn == null) subMsgSendYn = request.getParameter("subMsgSendYn"); - String testYn = request.getParameter("p_testYn"); if (testYn == null) testYn = request.getParameter("testYn"); + //테스트용 + //String mberId = request.getParameter("p_mberId"); //문자온 로그인 아이디 + //String apiKey = request.getParameter("p_apiKey"); //발급받은 api key - System.out.println("senderKey : "+ senderKey); + /******************** 전송 요청 URL ********************/ + final String apiUrl = "http://119.193.215.98:8087/api/kakao/at/sendMsg"; - if (callFrom != null) callFrom = callFrom.replaceAll("\\D", ""); // 숫자만 - // ===== form 구성 (x-www-form-urlencoded) ===== - List form = new ArrayList<>(); - form.add(new BasicNameValuePair("mberId", p_mberId)); - form.add(new BasicNameValuePair("accessKey", p_apiKey)); - form.add(new BasicNameValuePair("senderKey", senderKey != null ? senderKey : "")); - form.add(new BasicNameValuePair("templateCode", templateCode != null ? templateCode : "")); - form.add(new BasicNameValuePair("callFrom", callFrom != null ? callFrom : "")); - form.add(new BasicNameValuePair("subMsgSendYn", subMsgSendYn != null ? subMsgSendYn : "")); - if (testYn != null && !testYn.isEmpty()) { - form.add(new BasicNameValuePair("testYn", testYn)); // snake_case 아님 - } + //회원아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 mberId와 apiKey 값을 적어서 사용 + String p_mberId = request.getParameter("mberId"); //사용자 ID + String p_apiKey = request.getParameter("accessKey"); //API KEY - // ===== 수신자 인덱스 수집 (callTo_* / p_callTo_* 모두 지원) ===== - Set idxSet = new TreeSet(); // 자동 오름차순 - for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) { - String nm = e.nextElement(); - if (nm.startsWith("callTo_")) { - try { idxSet.add(Integer.parseInt(nm.substring("callTo_".length()))); } catch(Exception ignore){} - } else if (nm.startsWith("p_callTo_")) { - try { idxSet.add(Integer.parseInt(nm.substring("p_callTo_".length()))); } catch(Exception ignore){} + Map params = new HashMap(); + + //기본 전송 데이터 + params.put("mberId", p_mberId); //회원 아이디 + params.put("accessKey", p_apiKey); //인증키 + + + // ===== 공통 파라미터 수신 (p_* / 비접두어 둘 다 허용) ===== + String senderKey = request.getParameter("p_senderKey"); if (senderKey == null) senderKey = request.getParameter("senderKey"); + String templateCode = request.getParameter("p_templateCode"); if (templateCode == null) templateCode = request.getParameter("templateCode"); + String callFrom = request.getParameter("p_callFrom"); if (callFrom == null) callFrom = request.getParameter("callFrom"); + String subMsgSendYn = request.getParameter("p_subMsgSendYn"); if (subMsgSendYn == null) subMsgSendYn = request.getParameter("subMsgSendYn"); + String testYn = request.getParameter("p_testYn"); if (testYn == null) testYn = request.getParameter("testYn"); + + + if (callFrom != null) callFrom = callFrom.replaceAll("\\D", ""); // 숫자만 + + Map form = new LinkedHashMap(); + + form.put("mberId", p_mberId); + form.put("accessKey", p_apiKey); + form.put("senderKey", senderKey != null ? senderKey : ""); + form.put("templateCode", templateCode != null ? templateCode : ""); + form.put("callFrom", callFrom != null ? callFrom : ""); + form.put("subMsgSendYn", subMsgSendYn != null ? subMsgSendYn : ""); + + if (testYn != null && !testYn.isEmpty()) { + form.put("testYn", testYn); } - } - // ===== 인덱스별로 Postman 스타일 키 생성해 그대로 추가 ===== - for (Integer idx : idxSet) { - String callTo = request.getParameter("callTo_" + idx); - if (callTo == null) callTo = request.getParameter("p_callTo_" + idx); - if (callTo == null || callTo.trim().isEmpty()) continue; - callTo = callTo.replaceAll("\\D", ""); + // ===== 수신자 인덱스 수집 (callTo_* / p_callTo_* 모두 지원) ===== + Set idxSet = new TreeSet(); // 자동 오름차순 + for (Enumeration e = request.getParameterNames(); e.hasMoreElements();) { + String nm = e.nextElement(); + if (nm.startsWith("callTo_")) { + try { idxSet.add(Integer.parseInt(nm.substring("callTo_".length()))); } catch(Exception ignore){} + } else if (nm.startsWith("p_callTo_")) { + try { idxSet.add(Integer.parseInt(nm.substring("p_callTo_".length()))); } catch(Exception ignore){} + } + } - String title = request.getParameter("templateTitle_" + idx); - if (title == null) title = request.getParameter("p_title_" + idx); + // ===== 인덱스별로 Postman 스타일 키 생성해 그대로 추가 ===== + for (Integer idx : idxSet) { + String callTo = request.getParameter("callTo_" + idx); + if (callTo == null) callTo = request.getParameter("p_callTo_" + idx); + if (callTo == null || callTo.trim().isEmpty()) continue; + callTo = callTo.replaceAll("\\D", ""); - String content = request.getParameter("templateContent_" + idx); - if (content == null) content = request.getParameter("p_msgTxt_" + idx); + String title = request.getParameter("templateTitle_" + idx); + if (title == null) title = request.getParameter("p_title_" + idx); - String subTxt = request.getParameter("subMsgTxt_" + idx); - if (subTxt == null) subTxt = request.getParameter("p_subMsgTxt_" + idx); + String content = request.getParameter("templateContent_" + idx); + if (content == null) content = request.getParameter("p_msgTxt_" + idx); - form.add(new BasicNameValuePair("callTo_" + idx, callTo)); - if (title != null && !title.isEmpty()) form.add(new BasicNameValuePair("templateTitle_" + idx, title)); - if (content != null && !content.isEmpty()) form.add(new BasicNameValuePair("templateContent_" + idx, content)); - if (subTxt != null && !subTxt.isEmpty()) form.add(new BasicNameValuePair("subMsgTxt_" + idx, subTxt)); - } + String subTxt = request.getParameter("subMsgTxt_" + idx); + if (subTxt == null) subTxt = request.getParameter("p_subMsgTxt_" + idx); + form.put("callTo_" + idx, callTo); + if (title != null && !title.isEmpty()) form.put("templateTitle_" + idx, title); + if (content != null && !content.isEmpty()) form.put("templateContent_" + idx, content); + if (subTxt != null && !subTxt.isEmpty()) form.put("subMsgTxt_" + idx, subTxt); - // (선택) 서버 로그로 확인 - System.out.println("form :: " + form); + } - // ===== 전송 ===== - String result = ""; - try (CloseableHttpClient client = HttpClients.createDefault()) { - HttpPost post = new HttpPost(apiUrl); - post.setHeader("Accept", "application/json"); - post.setEntity(new UrlEncodedFormEntity(form, StandardCharsets.UTF_8)); - try (CloseableHttpResponse res = client.execute(post)) { - if (res != null && res.getEntity() != null) { - try (BufferedReader in = new BufferedReader( - new InputStreamReader(res.getEntity().getContent(), StandardCharsets.UTF_8))) { - String line; - while ((line = in.readLine()) != null) result += line; + + + // ===== 전송 ===== + String result = ""; + try (CloseableHttpClient client = HttpClients.createDefault()) { + + HttpPost post = new HttpPost(apiUrl); + post.setHeader("Accept", "application/json"); + +// form(Map)을 x-www-form-urlencoded 문자열로 변환 + StringBuilder body = new StringBuilder(); + for (Map.Entry entry : form.entrySet()) { + if (body.length() > 0) { + body.append('&'); + } + body.append(URLEncoder.encode(entry.getKey(), "UTF-8")) + .append('=') + .append(URLEncoder.encode(entry.getValue() != null ? entry.getValue() : "", "UTF-8")); + } + +// StringEntity로 설정 + StringEntity entity = new StringEntity( + body.toString(), + ContentType.APPLICATION_FORM_URLENCODED.withCharset(StandardCharsets.UTF_8) + ); + post.setEntity(entity); + + + + + try (CloseableHttpResponse res = client.execute(post)) { + if (res != null && res.getEntity() != null) { + try (BufferedReader in = new BufferedReader( + new InputStreamReader(res.getEntity().getContent(), StandardCharsets.UTF_8))) { + String line; + while ((line = in.readLine()) != null) result += line; + } } } } + + out.print((result == null || result.isEmpty()) + ? "{\"data\":{\"resultCode\":99,\"msg\":\"EMPTY RESPONSE\"}}" + : result); + + + }catch(Exception e){ + out.print("{\"data\":{\"resultCode\":99,\"msg\":\"WRONG API METHOD\"}}"); + e.printStackTrace(); } - System.out.println(" ++ result :: "+ result); - out.print((result == null || result.isEmpty()) - ? "{\"data\":{\"resultCode\":99,\"msg\":\"EMPTY RESPONSE\"}}" - : result); - -} catch (Exception e) { - out.print("{\"data\":{\"resultCode\":99,\"msg\":\"WRONG API METHOD\"}}"); - e.printStackTrace(); -} -%> + /**************** 채널ID 조회 Response 예제 ******************/ + /* "resultCode": 결과코드, "objectList": 채널 목록 */ + /* "msg": 결과 메시지, "profileId": 프로필ID, "senderKey": 발신프로필키 */ + /* "phoneNumber": 핸드폰번호, "yellowId": 채널ID, "categoryName": 카테고리명 */ +%> \ No newline at end of file