2023-06-26 11:01 타 사이트에서 rest api를 이용한 문자 발송 테스트 페이지

This commit is contained in:
myname 2023-06-26 11:02:03 +09:00
parent 28f2bd48d0
commit fed8f87957
13 changed files with 12469 additions and 0 deletions

10860
src/main/webapp/sample_mjon/jquery-3.5.0.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,225 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<script type="text/javascript" src="./jquery-3.5.0.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//발송가능건수
$("#ajax_select_price").click(function(){
$('#dynamicTbody').append("");
//document.updatePasswordForm.action = '/web/user/sendRESTAPI_test_r1_send.do';
//document.updatePasswordForm.submit();
var searchWebParam = {
'p_mberId' : $('#mberId').val()
, 'p_apiKey' : $('#apiKey').val()
, 'p_msgGroupId' : $('#msgGroupId').val()
, 'p_page' : $('#page').val()
, 'p_pageSize' : $('#pageSize').val()
, 'p_testYn' : $('#testYn').val()
};
//검색 API를 Ajax로 이용 하기 위한 호출
$.ajax({
url : "./jsp_example_hstry_detail_r1.jsp",
//형식을 json으로 받을 것이기 때문에 지정하여 주었습니다.
dataType : "json",
async : false,
type : "POST",
data : searchWebParam,
success: function (returnData, status) {
console.log('returnData : ', returnData);
if (returnData.data.resultCode=="0"){
//makeResult(returnData);
if(returnData.data.objectList.length == 0){
alert('조회 결과가 없습니다.')
}else{
makeResult(returnData);
}
/*
$("span#sp").text(returnData.shortPrice);
$("span#lp").text(returnData.longPrice);
$("span#pp").text(returnData.picturePrice);
$("span#um").text(returnData.userMoney);
$("span#sspe").text(returnData.shortSendPsbltEa);
$("span#lspe").text(returnData.longSendPsbltEa);
$("span#pspe").text(returnData.pictureSendPsbltEa);
*/
} else{
alert(returnData.data.resultCode+" : "+returnData.data.msg);
}
},
error : function(request, status, error){
alert(request+"///"+error+"///"+status+"///"+"AJAX_ERROR");
console.log("AJAX_ERROR");
}
});
});
});
function makeResult(p_returnData){
var v_html = "";
try {
for (var i=0;i<p_returnData.data.objectList.length;i++){
v_html += "<tr>";
v_html += "<td>";
v_html += p_returnData.data.objectList[i].msgId;
v_html += "</td>";
v_html += "<td>";
v_html += p_returnData.data.objectList[i].msgTypeName;
v_html += "</td>";
v_html += "<td>";
v_html += p_returnData.data.objectList[i].callFrom;
v_html += "</td>";
v_html += "<td>";
v_html += p_returnData.data.objectList[i].callTo;
v_html += "</td>";
v_html += "<td>";
v_html += p_returnData.data.objectList[i].msgResult;
v_html += "</td>";
v_html += "<td>";
v_html += p_returnData.data.objectList[i].regdate;
v_html += "</td>";
v_html += "<td>";
v_html += p_returnData.data.objectList[i].reqdate;
v_html += "</td>";
v_html += "<td>";
v_html += p_returnData.data.objectList[i].remainMsgCnt;
v_html += "</td>";
v_html += "</tr>";
}
} catch (error) {
console.error(error);
// Expected output: ReferenceError: nonExistentFunction is not defined
// (Note: the exact output may be browser-dependent)
}
v_html += "";
//$('#divResult').append("aaaaaa");
$('#dynamicTbody').html(v_html);
}
</script>
<div class="inner">
<!-- send top -->
<div class="send_top">
<div class="mypage_content current" id="tab5_3">
<div class="heading">
<h2><a href="./jsp_example_start_form_r1.jsp">돌아가기</a></h2>
<br/>
<h2>상세발송정보(샘플-문자온)</h2>
*mberId와 accessKey값은 실제 서비스시에는 jsp_example_hstry_r1.jsp 파일에 작성하여 사용하세요
<br/>(샘플 페이지에서는 월활한 테스트를 위해 파라미터 형식으로 제공합니다.)
<br/><br/><br/>
</div>
<div class="mem_cont_in">
<div class="input_list">
<!--
<div class="input_list_item">
<div class="input_left">*mberId
<input type="text" class="list_inputType1" id="mberId" maxlength="100" value="goodgkdus" size="100"/>
</div>
</div>
<div class="input_list_item">
<div class="input_left">*api key
<input type="text" class="list_inputType1" id="apiKey" maxlength="100" value="24cb8ec4ed7c16969d2ab2988dd2406ee2820" size="100"/>
</div>
</div>
-->
<div class="input_list_item">
<div class="input_left">*메시지ID
<input type="text" class="list_inputType1" id="msgGroupId" maxlength="100" value="MSGGID_0000000011452" size="100"/>
</div>
</div>
<div class="input_list_item">
<div class="input_left">페이지번호
<input type="text" class="list_inputType1" id="page" maxlength="100" value="" size="100"/>(기본값-1)
</div>
</div>
<div class="input_list_item">
<div class="input_left">페이지당 출력갯수
<input type="text" class="list_inputType1" id="pageSize" maxlength="100" value="" size="100"/>(기본값-30(30~500))
</div>
</div>
<div class="input_list_item">
<div class="input_left">테스트여부
<input type="text" class="list_inputType1" id="testYn" maxlength="100" value="" size="100"/>(기본값 없음, YF-테스트(실패), YS-테스트(성공)
</div>
</div>
<div class="mem_btnWrap2">
&nbsp;<button type="button" class="mem_btn3" style="width: 100%;" id="ajax_select_price" onclick="return false;">상세발송정보 요청</button>
</div>
</div>
</div>
<div class="list_cont" id="listTab_1">
<table class="board_list">
<colgroup>
<col style="width: 200px;">
<col style="width: 220px;">
<col style="width: 200px;">
<col style="width: 200px;">
<col style="width: 200px;">
<col style="width: 200px;">
<col style="width: 200px;">
<col style="width: 200px;">
</colgroup>
<thead>
<tr>
<th scope="row">메시지상세ID
</th>
<th scope="row">문자구분(유형)
</th>
<th scope="row">발신번호
</th>
<th scope="row">수신번호
</th>
<th scope="row">처리상태
</th>
<th scope="row">등록일시
</th>
<th scope="row">발송일시
</th>
<th scope="row">남겨진리스트수량(다음페이지여부)
</th>
</tr>
</thead>
<tbody id="dynamicTbody">
</tbody>
</table>
</div>
</div>
<!--// 마이페이지 - 비밀번호 변경 -->
</div>
<!--// send top -->
</div>
<!--// content 영역 -->

View File

@ -0,0 +1,110 @@
<%@page import="java.io.InputStreamReader"%>
<%@page import="java.io.BufferedReader"%>
<%@page import="org.apache.http.HttpResponse"%>
<%@page import="org.apache.http.client.methods.HttpPost"%>
<%@page import="org.apache.http.impl.client.HttpClients"%>
<%@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="org.apache.http.entity.mime.content.FileBody"%>
<%@page import="java.io.File"%>
<%@page import="java.util.Iterator"%>
<%@page import="java.nio.charset.Charset"%>
<%@page import="org.apache.http.entity.mime.HttpMultipartMode"%>
<%@page import="org.apache.http.entity.mime.MultipartEntityBuilder"%>
<%@page import="java.util.HashMap"%>
<%@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 = "__BDR__";
//회원아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 mberId와 apiKey 값을 적어서 사용해주세요
//실제서비스용
final String mberId = "antelope"; //문자온 로그인 아이디
final String apiKey = "5ec0a0311a7a0eb25cc9c11468ce372cd64501"; //발급받은 api key
//테스트용
//String mberId = request.getParameter("p_mberId"); //문자온 로그인 아이디
//String apiKey = request.getParameter("p_apiKey"); //발급받은 api key
/******************** 전송요청 URL ********************/
final String apiUrl = "https://api.munjaon.co.kr/api/inqry/hstryDetail"; // 전송요청 URL
// String apiUrl = "https://apidev.munjaon.co.kr:9998/api/inqry/hstryDetail";
/**************** 발송가능건수 예제 ******************/
System.out.println("상세발송이력");
Map<String, String> params = new HashMap<String, String>();
/******************** 인증정보 ********************/
params.put("mberId", mberId); //문자온 로그인 아이디
params.put("accessKey", apiKey); //APIKEY
/******************** 전송정보 ********************/
//(필수)
String p_msgGroupId = request.getParameter("p_msgGroupId"); //메시지 group id
//(선택)
String p_page = request.getParameter("p_page"); //페이지번호 기본-1
String p_pageSize = request.getParameter("p_pageSize"); //페이지당 출력갯수-30(30~500)
String p_testYn = request.getParameter("p_testYn"); //테스트데이터여부 '', 'YF', 'YS'
//추가 전송 데이터
params.put("msgGroupId" , p_msgGroupId); //문자 전송 정보
params.put("page" , p_page); //페이지번호
params.put("pageSize" , p_pageSize); //페이지당 출력갯수
params.put("test_yn" , p_testYn); //테스트 여부
String result = "";
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setBoundary(boundary);
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.setCharset(Charset.forName(encodingType));
for(Iterator<String> i = params.keySet().iterator(); i.hasNext();){
String key = i.next();
//전달값이 없는 경우 오류
try{
builder.addTextBody(key, params.get(key)
, ContentType.create("Multipart/related", encodingType));
}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("{\"resultCode\":99,\"message\":\"WRONG API METHOD\"}");
}
%>

View File

@ -0,0 +1,258 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<script type="text/javascript" src="./jquery-3.5.0.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//발송가능건수
$("#ajax_select_price").click(function(){
$('#dynamicTbody').append("");
//document.updatePasswordForm.action = '/web/user/sendRESTAPI_test_r1_send.do';
//document.updatePasswordForm.submit();
var searchWebParam = {
'p_mberId' : $('#mberId').val()
, 'p_apiKey' : $('#apiKey').val()
, 'p_page' : $('#page').val()
, 'p_pageSize' : $('#pageSize').val()
, 'p_startDate' : $('#startDate').val()
, 'p_endDate' : $('#endDate').val()
, 'p_testYn' : $('#testYn').val()
};
//검색 API를 Ajax로 이용 하기 위한 호출
$.ajax({
url : "./jsp_example_hstry_r1.jsp",
//형식을 json으로 받을 것이기 때문에 지정하여 주었습니다.
dataType : "json",
async : false,
type : "POST",
data : searchWebParam,
success: function (returnData, status) {
console.log('returnData : ', returnData);
if (returnData.data.resultCode=="0"){
console.log('returnData.resultCode : ', typeof returnData.resultCode);
if(returnData.data.objectList.length == 0){
alert('조회 결과가 없습니다.')
}else{
makeResult(returnData);
}
/*
$("span#sp").text(returnData.shortPrice);
$("span#lp").text(returnData.longPrice);
$("span#pp").text(returnData.picturePrice);
$("span#um").text(returnData.userMoney);
$("span#sspe").text(returnData.shortSendPsbltEa);
$("span#lspe").text(returnData.longSendPsbltEa);
$("span#pspe").text(returnData.pictureSendPsbltEa);
*/
} else{
alert(returnData.data.resultCode+" : "+returnData.data.msg);
}
},
error : function(request, status, error){
alert(request+"///"+error+"///"+status+"///"+"AJAX_ERROR");
console.log("AJAX_ERROR");
}
});
});
});
function makeResult(p_returnData){
var v_html = "";
try {
for (var i=0;i<p_returnData.data.objectList.length;i++){
var data = p_returnData.data.objectList[i];
console.log('p_returnData.data.objectList['+i+'] : ', data);
console.log('.sCnt : ', data.scnt);
v_html += "<tr>";
v_html += "<td>";
v_html += data.msgGroupId;
v_html += "</td>";
v_html += "<td>";
v_html += data.msgTypeName;
v_html += "</td>";
v_html += "<td>";
v_html += data.callFrom;
v_html += "</td>";
v_html += "<td>";
v_html += data.ttlCnt;
v_html += "</td>";
v_html += "<td>";
v_html += data.scnt;
v_html += "</td>";
v_html += "<td>";
v_html += data.fcnt;
v_html += "</td>";
v_html += "<td>";
v_html += data.wcnt;
v_html += "</td>";
v_html += "<td>";
v_html += data.msgResult;
v_html += "</td>";
v_html += "<td>";
v_html += data.smsTxt.substring(1,20);
v_html += "</td>";
v_html += "<td>";
v_html += data.regdate;
v_html += "</td>";
v_html += "<td>";
v_html += data.reqdate;
v_html += "</td>";
v_html += "<td>";
v_html += data.remainMsgCnt;
v_html += "</td>";
v_html += "</tr>";
}
} catch (error) {
console.error(error);
// Expected output: ReferenceError: nonExistentFunction is not defined
// (Note: the exact output may be browser-dependent)
}
v_html += "";
//$('#divResult').append("aaaaaa");
$('#dynamicTbody').html(v_html);
}
</script>
<div class="inner">
<!-- send top -->
<div class="send_top">
<div class="mypage_content current" id="tab5_3">
<div class="heading">
<h2><a href="./jsp_example_start_form_r1.jsp">돌아가기</a></h2>
<br/>
<h2>전체발송정보(샘플-문자온)</h2>
*mberId와 accessKey값은 실제 서비스시에는 jsp_example_hstry_r1.jsp 파일에 작성하여 사용하세요
<br/>(샘플 페이지에서는 월활한 테스트를 위해 파라미터 형식으로 제공합니다.)
<br/><br/><br/>
</div>
<div class="mem_cont_in">
<div class="input_list">
<!--
<div class="input_list_item">
<div class="input_left">*mberId
<input type="text" class="list_inputType1" id="mberId" maxlength="100" value="goodgkdus" size="100"/>
</div>
</div>
<div class="input_list_item">
<div class="input_left">*api key
<input type="text" class="list_inputType1" id="apiKey" maxlength="100" value="12e749877379aa7426275414050694b953" size="100"/>
</div>
</div>
-->
<div class="input_list_item">
<div class="input_left">페이지번호
<input type="text" class="list_inputType1" id="page" maxlength="100" value="" size="100"/>(기본값-1)
</div>
</div>
<div class="input_list_item">
<div class="input_left">페이지당 출력갯수
<input type="text" class="list_inputType1" id="pageSize" maxlength="100" value="" size="100"/>(기본값-30(30~500))
</div>
</div>
<div class="input_list_item">
<div class="input_left">조회시작일자
<input type="text" class="list_inputType1" id="startDate" maxlength="100" value="" size="100"/>(기본값 오늘)ex)20230601
</div>
</div>
<div class="input_list_item">
<div class="input_left">조회마감일자
<input type="text" class="list_inputType1" id="endDate" maxlength="100" value="" size="100"/>(기본값 내일)ex)20230602
</div>
</div>
<div class="input_list_item">
<div class="input_left">테스트여부
<input type="text" class="list_inputType1" id="testYn" maxlength="100" value="" size="100"/>(기본값 없음, YF-테스트(실패), YS-테스트(성공)
</div>
</div>
<div class="mem_btnWrap2">
&nbsp;<button type="button" class="mem_btn3" style="width: 100%;" id="ajax_select_price" onclick="return false;">전체발송정보 요청</button>
</div>
</div>
</div>
<div class="list_cont" id="listTab_1">
<table class="board_list">
<colgroup>
<col style="width: 200px;">
<col style="width: 220px;">
<col style="width: 200px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 100px;">
<col style="width: 200px;">
<col style="width: 200px;">
<col style="width: 200px;">
</colgroup>
<thead>
<tr>
<th scope="row">메시지ID
</th>
<th scope="row">문자구분(유형)
</th>
<th scope="row">발신번호
</th>
<th scope="row">전체요청수
</th>
<th scope="row">성공건수
</th>
<th scope="row">실패건수
</th>
<th scope="row">대기건수
</th>
<th scope="row">처리상태
</th>
<th scope="row">문자내용
</th>
<th scope="row">등록일시
</th>
<th scope="row">발송일시
</th>
<th scope="row">남겨진리스트수량(다음페이지여부)
</th>
</tr>
</thead>
<tbody id="dynamicTbody">
</tbody>
</table>
</div>
</div>
<!--// 마이페이지 - 비밀번호 변경 -->
</div>
<!--// send top -->
</div>
<!--// content 영역 -->

View File

@ -0,0 +1,109 @@
<%@page import="java.io.InputStreamReader"%>
<%@page import="java.io.BufferedReader"%>
<%@page import="org.apache.http.HttpResponse"%>
<%@page import="org.apache.http.client.methods.HttpPost"%>
<%@page import="org.apache.http.impl.client.HttpClients"%>
<%@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="org.apache.http.entity.mime.content.FileBody"%>
<%@page import="java.io.File"%>
<%@page import="java.util.Iterator"%>
<%@page import="java.nio.charset.Charset"%>
<%@page import="org.apache.http.entity.mime.HttpMultipartMode"%>
<%@page import="org.apache.http.entity.mime.MultipartEntityBuilder"%>
<%@page import="java.util.HashMap"%>
<%@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 = "__BDR__";
//회원아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 mberId와 apiKey 값을 적어서 사용해주세요
//실제서비스용
final String mberId = "antelope"; //문자온 로그인 아이디
final String apiKey = "5ec0a0311a7a0eb25cc9c11468ce372cd64501"; //발급받은 api key
//테스트용
//String mberId = request.getParameter("p_mberId"); //문자온 로그인 아이디
//String apiKey = request.getParameter("p_apiKey"); //발급받은 api key
/******************** 전송요청 URL ********************/
final String apiUrl = "https://api.munjaon.co.kr/api/inqry/hstry";
/**************** 발송가능건수 예제 ******************/
System.out.println("전체발송이력");
Map<String, String> params = new HashMap<String, String>();
/******************** 인증정보 ********************/
params.put("mberId", mberId); //문자온 로그인 아이디
params.put("accessKey", apiKey); //APIKEY
/******************** 전송정보 ********************/
//(선택)
String p_page = request.getParameter("p_page"); //페이지번호 기본-1
String p_pageSize = request.getParameter("p_pageSize"); //페이지당 출력갯수-30(30~500)
String p_startDate = request.getParameter("p_startDate"); //조회시작일자-기본값 오늘
String p_endDate = request.getParameter("p_endDate"); //조회마감일자-기본값 내일
String p_testYn = request.getParameter("p_testYn"); //테스트데이터여부 '', 'YF', 'YS'
//추가 전송 데이터
params.put("page" , p_page); //페이지번호
params.put("pageSize" , p_pageSize); //페이지당 출력갯수
params.put("startDate" , p_startDate); //시작일자
params.put("endDate" , p_endDate); //마감일자
params.put("test_yn" , p_testYn); //테스트 여부
String result = "";
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setBoundary(boundary);
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.setCharset(Charset.forName(encodingType));
for(Iterator<String> i = params.keySet().iterator(); i.hasNext();){
String key = i.next();
//전달값이 없는 경우 오류
try{
builder.addTextBody(key, params.get(key)
, ContentType.create("Multipart/related", encodingType));
}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("{\"resultCode\":99,\"message\":\"WRONG API METHOD\"}");
}
%>

View File

@ -0,0 +1,142 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<script type="text/javascript" src="./jquery-3.5.0.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//발송가능건수
$("#ajax_select_price").click(function(){
$("span#sp").text("");
$("span#lp").text("");
$("span#pp").text("");
$("span#um").text("");
$("span#sspe").text("");
$("span#lspe").text("");
$("span#pspe").text("");
//document.updatePasswordForm.action = '/web/user/sendRESTAPI_test_r1_send.do';
//document.updatePasswordForm.submit();
var searchWebParam = {
'p_mberId' : $('#mberId').val()
, 'p_apiKey' : $('#apiKey').val()
};
//검색 API를 Ajax로 이용 하기 위한 호출
$.ajax({
url : "./jsp_example_select_price_r1.jsp",
//형식을 json으로 받을 것이기 때문에 지정하여 주었습니다.
dataType : "json",
async : false,
type : "POST",
data : searchWebParam,
success: function (returnData, status) {
console.log('returnData : ', returnData)
//alert(returnData.shortPrice);
//alert(returnData.resultCode);
//alert(returnData.message);
//alert(returnData.longPrice);
if (returnData.data.resultCode=="0"){
$("span#sp").text(returnData.data.shortPrice);
$("span#lp").text(returnData.data.longPrice);
$("span#pp").text(returnData.data.picturePrice);
$("span#um").text(returnData.data.mberMoney);
$("span#sspe").text(returnData.data.shortSendPsbltEa);
$("span#lspe").text(returnData.data.longSendPsbltEa);
$("span#pspe").text(returnData.data.pictureSendPsbltEa);
} else{
alert(returnData.data.resultCode+" : "+returnData.data.msg);
}
},
error : function(request, status, error){
alert(request+"///"+error+"///"+status+"///"+"AJAX_ERROR");
console.log("AJAX_ERROR");
}
});
});
});
</script>
<div class="inner">
<!-- send top -->
<div class="send_top">
<div class="mypage_content current" id="tab5_3">
<div class="heading">
<h2><a href="./jsp_example_start_form_r1.jsp">돌아가기</a></h2>
<br/>
<h2>발송가능건수(샘플-문자온)</h2>
*mberId와 accessKey값은 실제 서비스시에는 jsp_example_select_price_r1.jsp 파일에 작성하여 사용하세요
<br/>*샘플 페이지에서는 월활한 테스트를 위해 파라미터 형식으로 제공합니다.
<br/><br/><br/>
</div>
<div class="mem_cont_in">
<div class="input_list">
<!--
<div class="input_list_item">
<div class="input_left">*mberId
<input type="text" class="list_inputType1" id="mberId" maxlength="100" value="goodgkdus" size="100"/>
</div>
</div>
<div class="input_list_item">
<div class="input_left">*api key
<input type="text" class="list_inputType1" id="apiKey" maxlength="100" value="24cb8ec4ed7c16969d2ab2988dd2406ee2820" size="100"/>
</div>
</div>
-->
<div class="mem_btnWrap2">
&nbsp;<button type="button" class="mem_btn3" style="width: 100%;" id="ajax_select_price" onclick="return false;">발송가능건수 요청</button>
</div>
</div>
</div>
<div class="mem_cont_in">
<div class="input_list">
<div class="input_list_item">
<div class="input_left">단문단가 : <span class="input_left" id="sp"></span>
</div>
<div class="input_left">장문단가 : <span class="input_left" id="lp"></span>
</div>
<div class="input_left">그림문자단가 : <span class="input_left" id="pp"></span>
</div>
<div class="input_left">현재보유금액 : <span class="input_left" id="um"></span>
</div>
<div class="input_left">단문발송가능건수 : <span class="input_left" id="sspe"></span>
</div>
<div class="input_left">장문발송가능건수 : <span class="input_left" id="lspe"></span>
</div>
<div class="input_left">그림문자발송가능건수 : <span class="input_left" id="pspe"></span>
</div>
</div>
</div>
</div>
</div>
<!--// 마이페이지 - 비밀번호 변경 -->
</div>
<!--// send top -->
</div>
<!--// content 영역 -->

View File

@ -0,0 +1,95 @@
<%@page import="java.io.InputStreamReader"%>
<%@page import="java.io.BufferedReader"%>
<%@page import="org.apache.http.HttpResponse"%>
<%@page import="org.apache.http.client.methods.HttpPost"%>
<%@page import="org.apache.http.impl.client.HttpClients"%>
<%@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="org.apache.http.entity.mime.content.FileBody"%>
<%@page import="java.io.File"%>
<%@page import="java.util.Iterator"%>
<%@page import="java.nio.charset.Charset"%>
<%@page import="org.apache.http.entity.mime.HttpMultipartMode"%>
<%@page import="org.apache.http.entity.mime.MultipartEntityBuilder"%>
<%@page import="java.util.HashMap"%>
<%@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 = "__BDR__";
//회원아이디, APIKEY - 보안을 위해 실제 서비스 시에는 이곳에 mberId와 apiKey 값을 적어서 사용해주세요
//실제서비스용
final String mberId = "antelope"; //문자온 로그인 아이디
final String apiKey = "5ec0a0311a7a0eb25cc9c11468ce372cd64501"; //발급받은 api key
//테스트용
//String mberId = request.getParameter("p_mberId"); //문자온 로그인 아이디
//String apiKey = request.getParameter("p_apiKey"); //발급받은 api key
/******************** 전송요청 URL ********************/
final String apiUrl = "https://api.munjaon.co.kr/api/inqry/price";
/**************** 발송가능건수 예제 ******************/
System.out.println("잔액|단가|발송가능건수");
Map<String, String> params = new HashMap<String, String>();
/******************** 인증정보 ********************/
params.put("mberId", mberId); //문자온 로그인 아이디
params.put("accessKey", apiKey); //APIKEY
/******************** 전송정보 ********************/
String result = "";
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setBoundary(boundary);
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.setCharset(Charset.forName(encodingType));
for(Iterator<String> i = params.keySet().iterator(); i.hasNext();){
String key = i.next();
//전달값이 없는 경우 오류
try{
builder.addTextBody(key, params.get(key)
, ContentType.create("Multipart/related", encodingType));
}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("{\"resultCode\":99,\"message\":\"WRONG API METHOD\"}");
}
%>

View File

@ -0,0 +1,164 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<script type="text/javascript" src="./jquery-3.5.0.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//문자발송 함수
$("#ajax_select_price").click(function(){
//문자발송 결과 데이터 수신 전 기존 데이터 초기화
$("span#mgi").text("");
$("span#sc").text("");
$("span#fc").text("");
$("span#bc").text("");
$("span#mt").text("");
//문자발송 API로 전송할 데이터
var searchWebParam = {
'p_mberId' : $('#mberId').val() //회원 아이디
, 'p_apiKey' : $('#apiKey').val() //api 키
, 'p_callFrom' : $('#callFrom').val() //발신자 번호
, 'p_callToList' : $('#callToList').val()//수신자 번호
, 'p_smsTxt' : $('#smsTxt').val() //문자 내용
, 'p_nameStr' : $('#nameStr').val() //치환용 이름
, 'p_testYn' : $('#testYn').val() //테스트 데이터 여부
};
//문자발송 REST API를 Ajax로 이용하기 위한 호출
$.ajax({
url : "./jsp_example_send_msg_r1.jsp", //요청 URL
dataType : "json", //요청 값을 json으로 수신
async : false,
type : "POST", //POST 방식
data : searchWebParam,
success: function (returnData, status) {
console.log('returnData :: ', returnData);
if (returnData.data.resultCode=="0"){ //결과가 성공인 경우 결과값 노출
$("span#mgi").text(returnData.data.msgGroupId);
$("span#sc").text(returnData.data.successCnt);
$("span#fc").text(returnData.data.failCnt);
$("span#bc").text(returnData.data.blockCnt);
$("span#mt").text(returnData.data.msgType);
} else{ //결과가 실패인 경우 원인 노출
alert(returnData.data.resultCode+" : "+returnData.data.msg);
}
},
error : function(request, status, error){ //에러가 발생한 경우 에러 노출
alert(request+"///"+error+"///"+status+"///"+"AJAX_ERROR");
console.log("AJAX_ERROR");
}
});
});
});
</script>
<div class="inner">
<div class="send_top">
<div class="mypage_content current" id="tab5_3">
<div class="heading">
<h2><a href="./jsp_example_start_form_r1.jsp">돌아가기</a></h2>
<br/>
<!-- 문자발송 설명 및 입력 영역 시작 -->
<h2>문자발송(샘플-문자온)</h2>
*mberId와 accessKey값은 실제 서비스시에는 jsp_example_send_msg_r1.jsp 파일에 작성하여 사용하세요
<br/>(샘플 페이지에서는 월활한 테스트를 위해 파라미터 형식으로 제공합니다.)
<br/><br/><br/>
</div>
<div class="mem_cont_in">
<div class="input_list">
<!--
<div class="input_list_item">
<div class="input_left">*mberId
<input type="text" class="list_inputType1" id="mberId" maxlength="100" value="goodgkdus" size="100"/>
</div>
</div>
<div class="input_list_item">
<div class="input_left">*api key
<input type="text" class="list_inputType1" id="apiKey" maxlength="100" value="24cb8ec4ed7c16969d2ab2988dd2406ee2820" size="100"/>
</div>
</div>
-->
<!-- 발신자 번호 -->
<div class="input_list_item">
<div class="input_left">callFrom
<input type="text" class="list_inputType1" id="callFrom" maxlength="100" value="01035520132" size="100"/>
</div>
</div>
<!-- 수신자 번호 -->
<div class="input_list_item">
<div class="input_left">callToList
<input type="text" class="list_inputType1" id="callToList" maxlength="100" value="01022265487,01063170387,01011112222" size="100"/>
</div>
</div>
<!-- 문자 내용 -->
<div class="input_list_item">
<div class="input_left">smsTxt
<input type="text" class="list_inputType1" id="smsTxt" maxlength="100" value="문자 테스트~![*이름*]" size="100"/>
</div>
</div>
<!-- 치환용 이름 -->
<div class="input_list_item">
<div class="input_left">nameStr
<input type="text" class="list_inputType1" id="nameStr" maxlength="100" value="홍길동1|홍길동2|홍길동3" size="100"/>
</div>
</div>
<!-- 테스트 여부 -->
<div class="input_list_item">
<div class="input_left">테스트여부
<input type="text" class="list_inputType1" id="testYn" maxlength="100" value="" size="100"/>(기본값 없음, YF-테스트(실패), YS-테스트(성공)
</div>
</div>
<!-- 문자발송 설명 및 입력 영역 끝 -->
<div class="mem_btnWrap2">
&nbsp;<button type="button" class="mem_btn3" style="width: 100%;" id="ajax_select_price" onclick="return false;">문자발송</button>
</div>
</div>
</div>
<!-- 문자 발송 결과값 노출 영역 시작 -->
<div class="mem_cont_in">
<div class="input_list">
<div class="input_list_item">
<div class="input_left">메세지ID : <span class="input_left" id="mgi"></span>
</div>
<div class="input_left">성공수량 : <span class="input_left" id="sc"></span>
</div>
<div class="input_left">실패수량 : <span class="input_left" id="fc"></span>
</div>
<div class="input_left">block수량 : <span class="input_left" id="bc"></span>
</div>
<div class="input_left">메세지타입 : <span class="input_left" id="mt"></span>
</div>
</div>
</div>
</div>
<!-- 문자발송 결과값 노출 영역 끝 -->
</div>
</div>
</div>

View File

@ -0,0 +1,137 @@
<%@page import="java.io.InputStreamReader"%>
<%@page import="java.io.BufferedReader"%>
<%@page import="org.apache.http.HttpResponse"%>
<%@page import="org.apache.http.client.methods.HttpPost"%>
<%@page import="org.apache.http.impl.client.HttpClients"%>
<%@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="org.apache.http.entity.mime.content.FileBody"%>
<%@page import="java.io.File"%>
<%@page import="java.util.Iterator"%>
<%@page import="java.nio.charset.Charset"%>
<%@page import="org.apache.http.entity.mime.HttpMultipartMode"%>
<%@page import="org.apache.http.entity.mime.MultipartEntityBuilder"%>
<%@page import="java.util.HashMap"%>
<%@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 - 보안을 위해 실제 서비스 시에는 이곳에 mberId와 apiKey 값을 적어서 사용
//실제서비스용
final String mberId = "antelope"; //문자온 로그인 아이디
final String apiKey = "5ec0a0311a7a0eb25cc9c11468ce372cd64501"; //발급받은 api key
//테스트용
//String mberId = request.getParameter("p_mberId"); //문자온 로그인 아이디
//String apiKey = request.getParameter("p_apiKey"); //발급받은 api key
/******************** 전송 요청 URL ********************/
final String apiUrl = "https://api.munjaon.co.kr/api/send/sendMsg"; //개발테스트용 URL
/******************** 전송 정보 ********************/
//필수 값
String p_callFrom = request.getParameter("p_callFrom"); //발신자 번호
String p_callToList = request.getParameter("p_callToList"); //수신자 번호
String p_smsTxt = request.getParameter("p_smsTxt"); //문자 내용
//선택 값
String p_nameStr = request.getParameter("p_nameStr"); //치환용 이름
String p_testYn = request.getParameter("p_testYn"); //테스트 데이터 여부 '', 'YF', 'YS'
/* 추후 사용을 위하여 주석 상태로 보존 - 사용자 샘플 JSP에는 해당 내용 삭제 */
//String p_sPrice = request.getParameter("p_sPrice"); //단문문자단가
//String p_fileCnt = request.getParameter("p_fileCnt"); //첨부파일갯수
//String p_totPrice = request.getParameter("p_totPrice"); //총결제금액
//String p_txtReplYn = request.getParameter("p_txtReplYn"); //치환문자 여부 Y//N
//String p_txtReplYn = "N"; //치환문자 여부 - 초기 지원안함
//String p_msgType = request.getParameter("p_msgType"); //문자타입 4-단문,5-URL,6-MMS,7-BARCODE,8-카카오알림톡
//String p_msgKind = request.getParameter("p_msgKind"); //N-일반,A-광고,C-선거
//String p_msgKind = "N"; //N-일반,A-광고,C-선거 - 초기 지원안함
//String p_mmsPrice = request.getParameter("p_mmsPrice"); //mms단가
//String p_mPrice = request.getParameter("p_mPrice"); //장문문자단가
//String p_spamStatus = request.getParameter("p_spamStatus"); //스팸문자 유무
//예약문자의 경우(선택값)
//String p_reserveYn = request.getParameter("p_reserveYn"); //예약문자 여부 N or Y
//String p_divideCnt = request.getParameter("p_divideCnt"); //분할문자 건수
//String p_divideTime = request.getParameter("p_divideTime"); //분할문자 간격
//String p_reqDate = request.getParameter("p_reqDate"); //예약시간
/* 추후 사용을 위하여 주석 상태로 보존 - 사용자 샘플 JSP에는 해당 내용 삭제 */
Map<String, String> params = new HashMap<String, String>();
//필수 전송 데이터
params.put("mberId", mberId); //회원 아이디
params.put("accessKey", apiKey); //인증키
params.put("callFrom" , p_callFrom); //발신자 번호
params.put("callToList" , p_callToList); //수신자 번호
params.put("smsTxt" , p_smsTxt); //문자 내용
//선택 전송 데이터
params.put("nameStr" , p_nameStr); //치환용 이름
params.put("test_yn" , p_testYn); //테스트 데이터 여부
//REST API 전송
String result = "";
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setBoundary(boundary);
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.setCharset(Charset.forName(encodingType));
try{
for(Iterator<String> i = params.keySet().iterator(); i.hasNext();){
String key = i.next();
//전달값이 없는 경우 오류
try{
builder.addTextBody(key, params.get(key)
, 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("{\"resultCode\":99,\"message\":\"WRONG API METHOD\"}");
}
/**************** 문자발송 Response 예제 ******************/
/* "result_code": 결과코드, "msgGroupId": 메세지 그룹 ID, "msgType": 메세지 타입 */
/* "test_yn": 테스트 데이터 여부, "successCnt": 성공 건수 , "blockCnt" : 수신거부 건수*/
%>

View File

@ -0,0 +1,183 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<script type="text/javascript" src="./jquery-3.5.0.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//대량문자발송
$("#ajax_select_price").click(function(){
$("span#mgi").text("");
$("span#sc").text("");
$("span#fc").text("");
$("span#bc").text("");
$("span#mt").text("");
//문자발송 API로 전송할 데이터
var searchWebParam = {
'p_mberId' : $('#mberId').val()
, 'p_apiKey' : $('#apiKey').val()
, 'p_callFrom' : $('#callFrom').val()
, 'p_testYn' : $('#testYn').val()
};
var tagId = "";
//전송할 데이터에 수신자, 문자내용 개수만큼 추가해주기
$.each($('.input_list input'), function (index, tag){
tagId = $(tag).attr('id');
if(tagId.startsWith('p_callTo') || tagId.startsWith('p_smsTxt')){
searchWebParam[tagId] = $(tag).val();
}
});
//문자발송 REST API를 Ajax로 이용하기 위한 호출
$.ajax({
url : "./jsp_example_send_msgs_r1.jsp", //요청 URL
dataType : "json", //요청 값을 json으로 수신
async : false,
type : "POST", //POST 방식
data : searchWebParam,
success: function (returnData, status) {
console.log('returnData : ', returnData);
if (returnData.data.resultCode=="0"){ //결과가 성공인 경우 결과값 노출
$("span#mgi").text(returnData.data.msgGroupIdList);
$("span#sc").text(returnData.data.successCnt);
$("span#fc").text(returnData.data.failCnt);
$("span#bc").text(returnData.data.blockCnt);
$("span#mt").text(returnData.data.msgTypeList);
} else{ //결과가 실패인 경우 원인 노출
alert(returnData.data.resultCode+" : "+returnData.data.msg);
}
},
error : function(request, status, error){ //에러가 발생한 경우 에러 노출
alert(request+"///"+error+"///"+status+"///"+"AJAX_ERROR");
console.log("AJAX_ERROR");
}
});
});
// 수신자 추가 버튼
$('#sendAdd').click(function(){
var nextId = $('.callTo').length+1;
var textData = '<div class="input_list_item">'
+ '<div class="input_left">p_callTo_'+nextId+''
+ '<input type="text" class="list_inputType1 callTo" id="p_callTo_'+nextId+'" maxlength="100" value="">'
+ '</div>'
+'</div>'
+'<div class="input_list_item">'
+ '<div class="input_left">p_smsTxt_'+nextId+''
+ '<input type="text" class="list_inputType1 smsTxt" id="p_smsTxt_'+nextId+'" maxlength="100" value="">'
+ '</div>'
+'</div>'
;
$('.input_list').append(textData);
});
});
</script>
<div class="inner">
<div class="send_top">
<div class="mypage_content current" id="tab5_3">
<div class="heading">
<h2><a href="./jsp_example_start_form_r1.jsp">돌아가기</a></h2>
<br/>
<!-- 문자발송 설명 및 입력 영역 시작 -->
<h2>대량문자발송(샘플-문자온)</h2>
*mberId와 accessKey값은 실제 서비스시에는 jsp_example_send_msg_r1.jsp 파일에 작성하여 사용하세요
<br/>(샘플 페이지에서는 월활한 테스트를 위해 파라미터 형식으로 제공합니다.)
<br/><br/><br/>
</div>
<div class="mem_cont_in">
<div class="mem_btnWrap2">
<button type="button" class="mem_btn3" style="width: 50%;" id="sendAdd" onclick="return false;">수신자 추가</button>
</div>
<div class="mem_btnWrap2">
&nbsp;<button type="button" class="mem_btn3" style="width: 100%;" id="ajax_select_price" onclick="return false;">문자발송</button>
</div>
<div class="input_list">
<!--
<div class="input_list_item">
<div class="input_left">*mberId
<input type="text" class="list_inputType1" id="mberId" maxlength="100" value="goodgkdus" size="100"/>
</div>
</div>
<div class="input_list_item">
<div class="input_left">*api key
<input type="text" class="list_inputType1" id="apiKey" maxlength="100" value="24cb8ec4ed7c16969d2ab2988dd2406ee2820" size="100"/>
</div>
</div>
-->
<!-- 발신자 번호 -->
<div class="input_list_item">
<div class="input_left">callFrom
<input type="text" class="list_inputType1" id="callFrom" maxlength="100" value="01035520132" size="100"/>
</div>
</div>
<!-- 테스트 여부 -->
<div class="input_list_item">
<div class="input_left">테스트여부
<input type="text" class="list_inputType1" id="testYn" maxlength="100" value="" size="100"/>(기본값 없음, YF-테스트(실패), YS-테스트(성공)
</div>
</div>
<!-- 수신자 번호 1-->
<div class="input_list_item">
<div class="input_left">p_callTo_1
<input type="text" class="list_inputType1 callTo" id="p_callTo_1" maxlength="100" value="01083584250">
</div>
</div>
<!-- 문자 내용 1 -->
<div class="input_list_item">
<div class="input_left">p_smsTxt_1
<input type="text" class="list_inputType1 smsTxt" id="p_smsTxt_1" maxlength="100" value="testMsg">
</div>
</div>
<!-- 문자발송 설명 및 입력 영역 끝 -->
</div>
</div>
<!-- 문자 발송 결과값 노출 영역 시작 -->
<div class="mem_cont_in">
<div class="input_list_item">
<div class="input_left">메세지ID : <span class="input_left" id="mgi"></span>
</div>
<div class="input_left">성공수량 : <span class="input_left" id="sc"></span>
</div>
<div class="input_left">실패수량 : <span class="input_left" id="fc"></span>
</div>
<div class="input_left">block수량 : <span class="input_left" id="bc"></span>
</div>
<div class="input_left">메세지타입 : <span class="input_left" id="mt"></span>
</div>
</div>
</div>
<!-- 문자발송 결과값 노출 영역 끝 -->
</div>
</div>
</div>

View File

@ -0,0 +1,163 @@
<%@page import="java.io.InputStreamReader"%>
<%@page import="java.io.BufferedReader"%>
<%@page import="org.apache.http.HttpResponse"%>
<%@page import="org.apache.http.client.methods.HttpPost"%>
<%@page import="org.apache.http.impl.client.HttpClients"%>
<%@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="org.apache.http.entity.mime.content.FileBody"%>
<%@page import="java.io.File"%>
<%@page import="java.util.Iterator"%>
<%@page import="java.nio.charset.Charset"%>
<%@page import="org.apache.http.entity.mime.HttpMultipartMode"%>
<%@page import="org.apache.http.entity.mime.MultipartEntityBuilder"%>
<%@page import="java.util.HashMap"%>
<%@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 - 보안을 위해 실제 서비스 시에는 이곳에 mberId와 apiKey 값을 적어서 사용
//실제서비스용
final String mberId = "antelope"; //문자온 로그인 아이디
final String apiKey = "5ec0a0311a7a0eb25cc9c11468ce372cd64501"; //발급받은 api key
//테스트용
//String mberId = request.getParameter("p_mberId"); //문자온 로그인 아이디
//String apiKey = request.getParameter("p_apiKey"); //발급받은 api key
/******************** 전송 요청 URL ********************/
String apiUrl = "https://api.munjaon.co.kr/api/send/sendMsgs"; //개발테스트용 URL
/******************** 전송 정보 ********************/
//필수 값’
String p_callFrom = request.getParameter("p_callFrom"); //발신자 번호
String p_callTo_1 = request.getParameter("p_callTo_1"); //수신자 번호 1
String p_smsTxt_1 = request.getParameter("p_smsTxt_1"); //문자 내용 1
//선택 값
String p_testYn = request.getParameter("p_testYn"); //테스트 데이터 여부 '', 'YF', 'YS'
/* 추후 사용을 위하여 주석 상태로 보존 - 사용자 샘플 JSP에는 해당 내용 삭제 */
//String p_nameStr_1 = request.getParameter("p_nameStr_1"); //치환용 이름 1
//String p_mmsPrice = request.getParameter("p_mmsPrice"); //mms 단가
//String p_mPrice = request.getParameter("p_mPrice"); //장문문자단가
//String p_spamStatus = request.getParameter("p_spamStatus"); //스팸문자 유무
//String p_eachPrice = request.getParameter("p_eachPrice"); //개별 금액
//String p_fileCnt = request.getParameter("p_fileCnt"); //첨부파일갯수
//String p_sPrice = request.getParameter("p_sPrice"); //단문문자단가
//String p_totPrice = request.getParameter("p_totPrice"); //총결제금액
//String p_txtReplYn = request.getParameter("p_txtReplYn"); //치환문자 여부 Y//N
//String p_txtReplYn = "N"; //치환문자 여부 - 초기 지원안함
//String p_msgType = request.getParameter("p_msgType"); //문자타입 4-단문,5-URL,6-MMS,7-BARCODE,8-카카오알림톡
//String p_msgKind = request.getParameter("p_msgKind"); //N-일반,A-광고,C-선거
//String p_msgKind = "N"; //N-일반,A-광고,C-선거 - 초기 지원안함
//예약문자의 경우(선택값)
//String p_reserveYn = request.getParameter("p_reserveYn"); //예약문자 여부 N or Y
//String p_divideCnt = request.getParameter("p_divideCnt"); //분할문자 건수
//String p_divideTime = request.getParameter("p_divideTime"); //분할문자 간격
//String p_reqDate = request.getParameter("p_reqDate"); //예약시간
Map<String, String> params = new HashMap<String, String>();
//필수 전송 데이터
params.put("mberId", mberId); //회원 아이디
params.put("accessKey", apiKey); //인증키
params.put("callFrom" , p_callFrom); //발신번호
//선택 전송 데이터
params.put("test_yn" , p_testYn); //테스트 여부
//전송할 데이터에 수신자, 문자내용 개수만큼 추가해주기
for (int i=1;i<101;i++){ //최대 수신자 100명
String p_callTo = "p_callTo_"+Integer.toString(i);
String p_smsTxt = "p_smsTxt_"+Integer.toString(i);
String s_callTo = "callTo_"+Integer.toString(i);
String s_smsTxt = "smsTxt_"+Integer.toString(i);
p_callTo_1 = request.getParameter(p_callTo);
p_smsTxt_1 = request.getParameter(p_smsTxt);
System.out.println("======i=====");
System.out.println(i);
System.out.println(p_callTo_1);
System.out.println(p_smsTxt_1);
if (p_callTo_1 != null
&& p_smsTxt_1 != null
&& !"".equals(p_callTo_1)
&& !"".equals(p_smsTxt_1)
){
params.put(s_callTo, p_callTo_1); //수신자 추가
params.put(s_smsTxt, p_smsTxt_1); //문자내용 추가
} else{
break;
}
}
//REST API 전송
String result = "";
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.setBoundary(boundary);
builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
builder.setCharset(Charset.forName(encodingType));
try{
for(Iterator<String> i = params.keySet().iterator(); i.hasNext();){
String key = i.next();
//전달값이 없는 경우 오류˜
try{
builder.addTextBody(key, params.get(key)
, 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("{\"resultCode\":99,\"message\":\"WRONG API METHOD\"}");
}
/**************** 문자발송 Response 예제 ******************/
/* "result_code": 결과코드, "msgGroupIdList": 메세지 그룹 ID 리스트, "msgTypeList": 메세지 타입 리스트*/
/* "test_yn": 테스트 데이터 여부, "successCnt": 성공 건수 , "blockCnt" : 수신거부 건수, "failCnt": 발송실패 건수*/
%>

View File

@ -0,0 +1,23 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<script type="text/javascript" src="./jquery-3.5.0.js"></script>
<div class="inner">
<div class="send_top">
<div class="mypage_content current" id="tab5_3">
<div class="heading">
<h2>REST API(샘플-문자온)</h2>
</div>
<div class="heading">
<!-- 메뉴별 샘플 이동 링크 -->
<h2><a href="./jsp_example_send_msg_form_r1.jsp">1.문자발송</a></h2>
<h2><a href="./jsp_example_send_msgs_form_r1.jsp">2.대량문자발송</a></h2>
<h2><a href="./jsp_example_hstry_form_r1.jsp">3.전체발송내역</a></h2>
<h2><a href="./jsp_example_hstry_detail_form_r1.jsp">4.상세발송내역</a></h2>
<h2><a href="./jsp_example_select_price_form_r1.jsp">5.발송가능건수</a></h2>
</div>
</div>
</div>
</div>

Binary file not shown.