SMS 전송기능을 구현하는데,
Controller와 Service에 대한 이해가 잘안가서...
더보기
www. ... smsSend.do(예시) → Service 호출해서 처리하게끔함
---------Controller--------
- 문자 API는 문자천국 API 이용
Controller
@RequestMapping(value = "sendSMS.do", produces = "text/html; charset=utf8")
public void sendSMS(HttpServletRequest request, HttpServletResponse response){
NexacroServiceManager manager = new NexacroServiceManager();
try {
manager.setRequest(request);
//넥사크로에서 호출한 파라미터 가져오기
String sUserid = "(사용자명 입력)";
String authKey = "(문자천국 인증키입력)";
String sendUrl = "http://www.skysms.co.kr/apiSend/sendApi.php"; // http://www.skysms.co.kr/apiSend/sendApi_UTF8.php
String sendMsg = manager.getString("text"); // 80자이상이면 sType은 mms, 이하면 sms
String destNum = manager.getString("destNum");
String callNum = manager.getString("callNum");
String sendDate = manager.getString("sendDate"); // yymmdd 이런식으로 해야하는지 ? ("yyyy-MM-dd").format(date);
String sMode = "";
String type = manager.getString("type"); // sendMsg가 80자 이상이면 mms, 아니면 sms
HashMap<String, String> params = new HashMap<String, String>();
params.put("USERID", sUserid);
params.put("AUTHKEY", authKey);
params.put("SENDURL", sendUrl);
params.put("DESTNUM", destNum);
params.put("CALLNUM", callNum); //사전에 사이트에서 번호를 인증하고 등록하여야 함
params.put("TYPE", type);
params.put("TEXT", sendMsg); //메시지 내용 params.put("app_version", "test app 1.2");
// System.out.println(obj.toString()); //전송 결과 출력
cmService.sendSMS(params);
}catch (Exception e){
System.out.println(e.getMessage());
e.printStackTrace();
}
manager.success(response);
}
넘겨줄 파라미터를 params에다가 하나씩 넣어주고 -> 서비스에다가 넘겨준다(params)
Service
public void sendSMS(Map<String, String> params) {
// 변수 맞춰넣기
String sUserid = "(사용자 id)";
String authKey = "(문자천국 인증키입력)";
String sendMsg = "(테스트)견적서가 요청되었습니다";// (String)params.get("sendMsg"); // 80자이상이면 sType은 mms , 이하면 sms
String destNum = "01098765432" ; // 받는 사람 번호 입력
String callNum = "01012345678" ; // 보내는 사람 번호 입력
String sMode = "";
String sendDate = "2021-04-15";
String sType = "SMS";
if(sendMsg.length() >= 80)
sType = "MMS";
else
sType = "SMS";
String sendUrl = "http://www.skysms.co.kr/apiSend/sendApi.php";
String sendParam ="sUserid="+sUserid+" authKey="+authKey+" destNum="+destNum+" callNum="+callNum+"sendMsg"+sendMsg+" sMode="+sMode+" sendDate="+sendDate+" sType="+sType; // authkey,url 추가하기, 등등
try{
URL url = new URL(sendUrl);
URLConnection connection = url.openConnection();
HttpURLConnection hurlc = (HttpURLConnection)connection;
hurlc.setRequestMethod("POST");
hurlc.setDoOutput(true);
hurlc.setDoInput(true);
hurlc.setUseCaches(false);
hurlc.setDefaultUseCaches(false);
PrintWriter out = new PrintWriter(hurlc.getOutputStream());
out.println(sendParam);
out.close();
// BufferedReader in = new BufferedReader(new InputStreamReader(hurlc.getInputStream()));
// String inputLine = null;
// while ((inputLine = in.readLine()) != null){
// System.out.println(inputLine);
// }
// in.close();
}catch(Exception ex){
System.out.println(ex);
}
}
Service에서 해주어야할 일 키포인트!!
- url에 변수를 같이 담아서 post 방식으로 보내는 것
// service 에서 post방식으로 url 호출하는 방법 !
URL url = new URL(sendUrl);
URLConnection connection = url.openConnection();
HttpURLConnection hurlc = (HttpURLConnection)connection;
hurlc.setRequestMethod("POST");
hurlc.setDoOutput(true);
hurlc.setDoInput(true);
hurlc.setUseCaches(false);
hurlc.setDefaultUseCaches(false);
PrintWriter out = new PrintWriter(hurlc.getOutputStream());
out.println(sendParam);
out.close();
URL을 연결 시켜주고 -> POST로 보낼거라고 선언 -> 파라미터 넘겨줌
'Java' 카테고리의 다른 글
[Spring] selectKey (0) | 2021.07.01 |
---|---|
[Spring] 자바빈 Javabean (0) | 2021.06.29 |
[Spring] REST API (0) | 2021.06.29 |
[Spring] 스프링 프레임워크의 시작 (0) | 2021.06.29 |
[Java] CSV에서 데이터베이스로 데이터를 삽입하는 Java 코드 예제 (0) | 2020.11.24 |
댓글