<%@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 encodingType = "UTF-8"; final String boundary = "____boundary____"; final String mberId = "goodgkdus"; final String accessKey = "0367a25ec370d1141898a0b9767103"; /**************** 문자전송하기 예제 ******************/ /* "result_code":결과코드,"message":결과문구, */ /* "msg_id":메세지ID,"error_cnt":에러갯수,"success_cnt":성공갯수 */ /* 동일내용 > 전송용 입니다. /******************** 인증정보 ********************/ //String sms_url = "https://apis.aligo.in/send/"; // 전송요청 URL //String sms_url = "https://api.munjaon.co.kr:9998/api/accessTest/Test"; // 전송요청 URL //String sms_url = "https://api.munjaon.co.kr:9998/api/accessKey/SendMsg"; // 전송요청 URL String sms_url = "http://localhost:8088/api/accessKey/SendMsg"; // 전송요청 URL Map sms = new HashMap(); sms.put("mberId", mberId); // SMS 아이디 sms.put("accessKey", accessKey); //인증키 /******************** 인증정보 ********************/ //임시 - 테스트용 시작 //String p_mberId = request.getParameter("p_mberId"); //발신번호 //String p_accessKey = request.getParameter("p_accessKey"); //수신번호 //sms.put("mberId", p_mberId); // SMS 아이디 //sms.put("accessKey", p_accessKey); //인증키 //임시 - 테스트용 끝 /******************** 전송정보 ********************/ //전달 받은 값 //필수값 String p_callFrom = request.getParameter("p_callFrom"); //발신번호 String p_callToList = request.getParameter("p_callToList"); //수신번호 //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_smsTxt = request.getParameter("p_smsTxt"); //SMS용 메시지본문 //선택값 //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"); //예약시간 //치환문자일경우(선택값) - 치환문자일 경우 txtReplYn=’Y’일때 필수 - 초기 지원안함 //String p_nameList = request.getParameter("p_nameList"); //치환 이름 리스트 String[] //String p_rep1List = request.getParameter("p_rep1List"); //치환 문자1 리스트 String[] //String p_rep2List = request.getParameter("p_rep2List"); //치환 문자2 리스트 String[] //String p_rep3List = request.getParameter("p_rep3List"); //치환 문자3 리스트 String[] //String p_rep4List = request.getParameter("p_rep4List"); //치환 문자4 리스트 String[] //String p_shortMsgCnt= request.getParameter("p_shortMsgCnt"); //단문 건수 //String p_longMsgCnt = request.getParameter("p_longMsgCnt"); //장문 건수 //String p_imgMsgCnt = request.getParameter("p_imgMsgCnt"); //이미지 건수 //이미지일경우(선택값) - 초기 지원안함 //String p_imgFilePath= request.getParameter("p_imgFilePath"); //그림 이미지 경로 String[] //String p_imgFileId = request.getParameter("p_imgFileId"); //이미지 atchId 배열 String[] //String p_templateYn = request.getParameter("p_templateYn"); //이미지 에디터 사용여부 String[] /* sms.put("msg", "%고객명%님. 안녕하세요. API TEST SEND"); // 메세지 내용 sms.put("receiver", "01111111111,01111111112"); // 수신번호 sms.put("destination", "01111111111|담당자,01111111112|홍길동"); // 수신인 %고객명% 치환 sms.put("sender", ""); // 발신번호 sms.put("rdate", ""); // 예약일자 - 20161004 : 2016-10-04일기준 sms.put("rtime", ""); // 예약시간 - 1930 : 오후 7시30분 sms.put("testmode_yn", "Y"); // Y 인경우 실제문자 전송X , 자동취소(환불) 처리 sms.put("title", "제목입력"); // LMS, MMS 제목 (미입력시 본문중 44Byte 또는 엔터 구분자 첫라인) */ //전송내역조회 //(필수) 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_startDate = request.getParameter("p_startDate"); //조회시작일자-기본값 오늘 String p_endDate = request.getParameter("p_endDate"); //조회마감일자-기본값 내일 //REST API 주소 받기 String p_api_type = request.getParameter("p_api_type").toUpperCase(); //api 호출 타입 msg,mass,hstry, hstryDetail,, myData System.out.println("p_api_type"); System.out.println(p_api_type); boolean b_is_send = true; //발송 처리 여부 switch (p_api_type) { case "MSG": //System.out.println("일반메세지발송"); sms_url = "http://192.168.0.59:8088/api/accessKey/SendMsg"; // 전송요청 URL sms_url = "http://192.168.0.59:8088/api/send/sendMsg"; // 전송요청 URL sms_url = "http://localhost:8088/api/send/sendMsg"; // 전송요청 URL //추가 전송 데이터 sms.put("callFrom", p_callFrom); // 발신번호 sms.put("callToList", p_callToList); // 수신번호 sms.put("msgType", p_msgType); // 문자타입 4-단문,5-URL,6-MMS,7-BARCODE,8-카카오알림톡 sms.put("smsTxt", p_smsTxt); //SMS용 메시지본문 sms.put("reserveYn", p_reserveYn); //예약문자 여부 N or Y sms.put("divideCnt", p_divideCnt); //분할문자 건수 sms.put("divideTime", p_divideTime); //분할문자 간격 sms.put("reqDate", p_reqDate); //예약시간 //System.out.println("일반메세지발송"); break; case "MASS": System.out.println("대량메세지발송"); sms_url = "http://localhost:8088/api/accessKey/mass"; // 전송요청 URL sms_url = "http://localhost:8088/api/send/sendMsgs"; // 전송요청 URL //추가 전송 데이터 sms.put("callFrom", p_callFrom); // 발신번호 sms.put("callToList", p_callToList); // 수신번호 sms.put("msgType", p_msgType); // 문자타입 4-단문,5-URL,6-MMS,7-BARCODE,8-카카오알림톡 sms.put("smsTxt", p_smsTxt); //SMS용 메시지본문 sms.put("reserveYn", p_reserveYn); //예약문자 여부 N or Y sms.put("divideCnt", p_divideCnt); //분할문자 건수 sms.put("divideTime", p_divideTime); //분할문자 간격 sms.put("reqDate", p_reqDate); //예약시간 break; case "HSTRY": System.out.println("전체발송이력"); sms_url = "http://localhost:8088/api/inqry/hstry"; // 전송요청 URL //추가 전송 데이터 sms.put("page" , p_page); //페이지번호 sms.put("pageSize" , p_pageSize); //페이지당 출력갯수 sms.put("startDate" , p_startDate); //시작일자 sms.put("endDate" , p_endDate); //마감일자 break; case "HSTRYDETAIL": System.out.println("상세발송이력"); sms_url = "http://localhost:8088/api/accessKey/hstryDetail"; // 전송요청 URL sms_url = "http://localhost:8088/api/inqry/hstryDetail"; // 전송요청 URL //추가 전송 데이터 sms.put("msgGroupId" , p_msgGroupId); //문자 전송 정보 sms.put("page" , p_page); //페이지번호 sms.put("pageSize" , p_pageSize); //페이지당 출력갯수 break; case "MYDATA": System.out.println("잔액|단가|발송가능건수"); sms_url = "http://localhost:8088/api/accessKey/myData"; // 전송요청 URL sms_url = "http://localhost:8088/api/inqry/price"; // 전송요청 URL break; default: b_is_send = false; break; } System.out.println(b_is_send); //REST API 요청 if (b_is_send){ System.out.println("일반메세지발송"); System.out.println(p_msgType); System.out.println("일반메세지발송"); String image = ""; //image = "/tmp/pic_57f358af08cf7_sms_.jpg"; // MMS 이미지 파일 위치 /******************** 전송정보 ********************/ String result = ""; MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setBoundary(boundary); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); builder.setCharset(Charset.forName(encodingType)); for(Iterator i = sms.keySet().iterator(); i.hasNext();){ String key = i.next(); //전달값이 없는 경우 오류 try{ System.out.println(key); System.out.println(key); System.out.println(sms.get(key)); builder.addTextBody(key, sms.get(key) , ContentType.create("Multipart/related", encodingType)); }catch(Exception ex){ //ex.printStackTrace() } } File imageFile = new File(image); if(image!=null && image.length()>0 && imageFile.exists()){ builder.addPart("image", new FileBody(imageFile, ContentType.create("application/octet-stream"), URLEncoder.encode(imageFile.getName(), encodingType))); } HttpEntity entity = builder.build(); HttpClient client = HttpClients.createDefault(); HttpPost post = new HttpPost(sms_url); 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); }else{ out.print("{\"resultCode\":99,\"message\":\"WRONG API METHOD\"}"); } }catch(Exception e){ out.print(e.getMessage()); } %>