통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이 
· LiveSeminar  · LiveConference
데브피아 C# 포럼 마을에 오신 것을 환영합니다.
  마을등급 C#   이 마을은 포럼마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 남정현 주민 12207 since 2006-12-28
우리마을 공지사항
질문&답변
강좌&팁
자유게시판
자료실
앨범
개인게시판
[마을 게시판]
구인/구직 게시판
건의 / 운영 제안
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리
 일정관리

 질문&답변 ※ 꼭 답변채택을 해주시어 성의껏 답변해주신 회원님께 감사의 마음을 전하시길 바랍니다.
 Cafe24 SMS호스팅을 사용하여 문자메시지를 발송하려고 합니다.  | Network Program 2013-10-10 오후 3:04:13
김상현 (4winners)  김상현님께 메시지 보내기김상현님을 내 주소록에 추가합니다.김상현님의 개인게시판 가기 번호: 156525 추천:0  / 읽음:0

샘플소스가 ASP, JSP, PHP만 있어 해당 스크립트를 분석하여 문자메시지를 보내려고 합니다.

 

해당 샘플소스를 보면 POST 메시지로 보내고 있기 때문에

 

WebRequest를 이용하여 POST 메시지를 만들어 보내면 될듯 한데

 

쉽지가 않네요 혹시 Cafe24 SMS를 Windows 어플리케이션에서 보내보신분 있으신가요?

 

고수분들의 도움을 부탁 드립니다. (_._) 꾸뻑

 

해당 샘플소스 입니다.

 

JSP 웹폼 코드

 

<html>
 <html>
  <form method="post" action="발송처리URL">
     <input type="hidden" name="action" value="go">
     전송메세지 <input type="text" name="msg" maxlength="80" size=80> 예)80byte 이하로 입력.
     <br>받는 번호 <input type="text" name="rphone" value="011-111-1111"> 예) 011-111-1111 , '-' 포함해서 입력.
     <br>이름삽입번호 <input type="text" name="destination" value="" size=80> 예) 010-000-0000|홍길동
  <br>
     보내는 번호<input type="text" name="sphone1" maxlength="4" value="011">-
     <input type="text" name="sphone2" maxlength="4" value="111">-
     <input type="text" name="sphone3" maxlength="4" value="1111">
     <br>예약 날짜 <input type="text" name="rdate" maxlength="8"> 예)20090909
     <br>예약 시간 <input type="text" name="rtime" maxlength="6"> 예)173000 ,오후 5시 30분,예약시간은 최소 10분 이상으로 설정.
     <br>return url <input type="text" name="returnurl" maxlength="64" value="http://*****.cafe24.com" >
    <br> test flag <input type="text" name="testflag" maxlength="1"> 예) 테스트시: Y
     <br>nointeractive <input type="text" name="nointeractive" maxlength="1"> 예) 사용할 경우 : 1, 성공시 대화상자(alert)를 생략.
     <br>반복설정 <input type="checkbox" name="repeatFlag" value="Y">
    <br> 반복횟수 <select name="repeatNum">
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
            </select> 예) 1~10회 가능.
     <br>전송간격<select name="repeatTime"> 예)15분 이상부터 가능.
            <option value="15">15</option>
            <option value="20">20</option>
            <option value="25">25</option>
            </select>분마다
            <br>
     <input type="submit" value="전송">
     <br/>이통사 정책에 따라 발신번호와 수신번호가 같은 경우 발송되지 않습니다.
  </form>
</html>

 

 

문자 발송 웹스크립트 소스

 


<%@ page language="java" import="java.util.*, java.security.*, java.io.*, java.net.*" %>
<%!
/**====================================================================================
  Description        :  사용 함수 선언
====================================================================================**/
 /**
 * nullcheck
 * @param str, Defaultvalue
 * @return
 */

 public static String nullcheck(String str,  String Defaultvalue ) throws Exception
 {
      String ReturnDefault = "" ;
      if (str == null)
      {
          ReturnDefault =  Defaultvalue ;
      }
      else if (str == "" )
     {
          ReturnDefault =  Defaultvalue ;
      }
      else
      {
                  ReturnDefault = str ;
      }
       return ReturnDefault ;
 }
 /**
 * BASE64 Encoder
 * @param str
 * @return
 */
public static String base64Encode(String str)  throws java.io.IOException {
    sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
    byte[] strByte = str.getBytes();
    String result = encoder.encode(strByte);
    return result ;
}

/**
 * BASE64 Decoder
 * @param str
 * @return
 */
public static String base64Decode(String str)  throws java.io.IOException {
    sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();
    byte[] strByte = decoder.decodeBuffer(str);
    String result = new String(strByte);
    return result ;
}
%>
<%
/**====================================================================================
  Description        : 캐릭터셋 정의
  EUC-KR: @ page contentType="text/html;charset=EUC-KR
  UTF-8: @ page contentType="text/html;charset=UTF-8
====================================================================================**/
%>
<%@ page contentType="text/html;charset=EUC-KR"%>
<%
/**====================================================================================
  Description        :  사용자 샘플코드
====================================================================================**/
String charsetType = "EUC-KR"; //EUC-KR 또는 UTF-8

request.setCharacterEncoding(charsetType);
response.setCharacterEncoding(charsetType);
String  action     = nullcheck(request.getParameter("action"), "");
if(action.equals("go")) {

 String sms_url = "";
    sms_url = "http://sslsms.cafe24.com/sms_sender.php"; // SMS 전송요청 URL
    String user_id = base64Encode("*******"); // SMS아이디
    String secure = base64Encode("*******");//인증키
    String msg = base64Encode(nullcheck(request.getParameter("msg"), ""));
    String rphone = base64Encode(nullcheck(request.getParameter("rphone"), ""));
    String sphone1 = base64Encode(nullcheck(request.getParameter("sphone1"), ""));
    String sphone2 = base64Encode(nullcheck(request.getParameter("sphone2"), ""));
    String sphone3 = base64Encode(nullcheck(request.getParameter("sphone3"), ""));
    String rdate = base64Encode(nullcheck(request.getParameter("rdate"), ""));
    String rtime = base64Encode(nullcheck(request.getParameter("rtime"), ""));
    String mode = base64Encode("1");
    String testflag = base64Encode(nullcheck(request.getParameter("testflag"), ""));
    String destination = base64Encode(nullcheck(request.getParameter("destination"), ""));
    String repeatFlag = base64Encode(nullcheck(request.getParameter("repeatFlag"), ""));
    String repeatNum = base64Encode(nullcheck(request.getParameter("repeatNum"), ""));
    String repeatTime = base64Encode(nullcheck(request.getParameter("repeatTime"), ""));
    String returnurl = nullcheck(request.getParameter("returnurl"), "");
    String nointeractive = nullcheck(request.getParameter("nointeractive"), "");

    String[] host_info = sms_url.split("/");
    String host = host_info[2];
    String path = "/" + host_info[3];
    int port = 80;

    // 데이터 맵핑 변수 정의
    String arrKey[]
        = new String[] {"user_id","secure","msg", "rphone","sphone1","sphone2","sphone3","rdate","rtime"
                                ,"mode","testflag","destination","repeatFlag","repeatNum", "repeatTime"};
    String valKey[]= new String[arrKey.length] ;
    valKey[0] = user_id;
    valKey[1] = secure;
    valKey[2] = msg;
    valKey[3] = rphone;
    valKey[4] = sphone1;
    valKey[5] = sphone2;
    valKey[6] = sphone3;
    valKey[7] = rdate;
    valKey[8] = rtime;
    valKey[9] = mode;
    valKey[10] = testflag;
    valKey[11] = destination;
    valKey[12] = repeatFlag;
    valKey[13] = repeatNum;
    valKey[14] = repeatTime;

    String boundary = "";
    Random rnd = new Random();
    String rndKey = Integer.toString(rnd.nextInt(32000));
    MessageDigest md = MessageDigest.getInstance("MD5");
    byte[] bytData = rndKey.getBytes();
    md.update(bytData);
    byte[] digest = md.digest();
    for(int i =0;i<digest.length;i++)
    {
        boundary = boundary + Integer.toHexString(digest[i] & 0xFF);
    }
    boundary = "---------------------"+boundary.substring(0,10);

    // 본문 생성
    String data = "";
    String index = "";
    String value = "";
    for (int i=0;i<arrKey.length; i++)
    {
        index =  arrKey[i];
        value = valKey[i];
        data +="--"+boundary+"\r\n";
        data += "Content-Disposition: form-data; name=\""+index+"\"\r\n";
        data += "\r\n"+value+"\r\n";
        data +="--"+boundary+"\r\n";
    }

    //out.println(data);

    InetAddress addr = InetAddress.getByName(host);
    Socket socket = new Socket(host, port);
    // 헤더 전송
    BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), charsetType));
    wr.write("POST "+path+" HTTP/1.0\r\n");
    wr.write("Content-Length: "+data.length()+"\r\n");
    wr.write("Content-type: multipart/form-data, boundary="+boundary+"\r\n");
    wr.write("\r\n");

    // 데이터 전송
    wr.write(data);
    wr.flush();

    // 결과값 얻기
    BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream(),charsetType));
    String line;
    String alert = "";
    ArrayList tmpArr = new ArrayList();
    while ((line = rd.readLine()) != null) {
        tmpArr.add(line);
    }
    wr.close();
    rd.close();

    String tmpMsg = (String)tmpArr.get(tmpArr.size()-1);
    String[] rMsg = tmpMsg.split(",");
    String Result= rMsg[0]; //발송결과
    String Count= ""; //잔여건수
    if(rMsg.length>1) {Count= rMsg[1]; }

    //발송결과 알림
    if(Result.equals("success")) {
        alert = "성공적으로 발송하였습니다.";
        alert += " 잔여건수는 "+ Count+"건 입니다.";
    }
    else if(Result.equals("reserved")) {
        alert = "성공적으로 예약되었습니다";
        alert += " 잔여건수는 "+ Count+"건 입니다.";
    }
    else if(Result.equals("3205")) {
        alert = "잘못된 번호형식입니다.";
    }
    else {
        alert = "[Error]"+Result;
    }

    out.println(nointeractive);

    if(nointeractive.equals("1") && !(Result.equals("Test Success!")) && !(Result.equals("success")) && !(Result.equals("reserved")) ) {
        out.println("<script>alert('" + alert + "')</script>");
    }
    else if(!(nointeractive.equals("1"))) {
        out.println("<script>alert('" + alert + "')</script>");
    }


    out.println("<script>location.href='"+returnurl+"';</script>");
}
%>

 

 

 

 

 

 

이 글에 답변 등록하기
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2010-서울강남-00026호
서울시 강남구 논현동 87-2 미래빌딩 5층 / TEL. 02_6719_6200 / FAX. 02-6499-1910 / 대표: 홍영준
Copyright ⓒ (주) 데브피아. All rights reserved.