[SB] 20. sms API 사용법

최재원's avatar
May 08, 2025
[SB] 20. sms API 사용법

sms API

API 문서

Request 방법

SyntaxSample
curl -X GET https://api.coolsms.co.kr/messages/v4/list --header "Authorization: HMAC-SHA256 apiKey=NCSAYU7YDBXYORXC, date=2019-07-01T00:41:48Z, salt=jqsba2jxjnrjor, signature=1779eac71a24cbeeadfa7263cb84b7ea0af1714f5c0270aa30ffd34600e363b4"
  • curl → cmd 로 http 요청 보내는 명령어
  • GET → 요청 방식
  • https://api.coolsms.co.kr/messages/v4/list → 풀 주소는 엔드포인트라 한다
  • https://api.coolsms.co.kr → 호스트 주소
  • --header → head 값 작성 코드
API key

java 에 SDK 설치

notion image
notion image
notion image
notion image

SDK 예제

API란

host : http://192.168.0.99:8080 endpoint : /messages/v4/send content-type : json method : post api key는 header에 추가 {"Authorization": "시크릿키" } 요청 body { "message": { "to": "01055558888", "from": "01022223333", "text": "문자메시지 내용이야 ㅋㅋ" } } 응답 body { "groupId": "1", "to": "01055558888", "from": "01022223333", "type": "sms", "statusMessage": "OK", "country": "Korea", "messageId": "10050", "statusCode": "200", "accountId": "82" }

SDK란

sendSms() 라는 함수를 제공해주는 것이다.

연습

단일 메시지

notion image

postman 으로 보내는 연습

notion image
notion image
notion image

javascript 로 API 를 사용하는 연습

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <input type="text" id="from" placeholder="발신자전화번호"> <input type="text" id="to" placeholder="수신자전화번호"> <input type="text" id="text" placeholder="문자내용"> <button onclick="sendSms()">문자전송</button> <script> async function sendSms(from, to, text){ let requestBody = { message : { from : document.querySelector("#from").value, to : document.querySelector("#to").value, text : document.querySelector("#text").value } }; let response = await fetch("http://192.168.0.99:8080/messages/v4/send", { method: "post", body : JSON.stringify(requestBody), headers: { "Content-Type":"application/json", "Authorization":"12345" } }); let responseBody = await response.json(); console.log(responseBody); } </script> </body> </html>
notion image

SMS 서버

package shop.mtcoding.blog.board; import lombok.Data; @Data public class SmsRequestDto { private Message message; @Data public static class Message { private String to; private String from; private String text; } }
package shop.mtcoding.blog.board; import lombok.AllArgsConstructor; import lombok.Data; @AllArgsConstructor @Data public class SmsResponseDto { private String groupId; private String to; private String from; private String type; private String statusMessage; private String country; private String messageId; private String statusCode; private String accountId; }
@PostMapping("/messages/v4/send") public @ResponseBody SmsResponseDto send(@RequestBody SmsRequestDto reqDTO, HttpServletRequest request) { String apiKey = request.getHeader("Authorization"); if (!apiKey.equals("12345")) throw new ExceptionApi403("API가 잘못되었어요"); // 메시지 전송 Service 요청 return new SmsResponseDto("1", reqDTO.getMessage().getTo(), reqDTO.getMessage().getFrom(), "sms", "OK", "Korea", "10050", "200", "82"); }
notion image

java 로 실행

API 를 사용한 방법

import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; public class Request { public static void main(String[] args) throws Exception { String targetUrl = "http://192.168.0.99:8080/messages/v4/send"; String body = """ { "message": { "to": "01055558888", "from": "01022223333", "text": "문자메시지 내용이야 ㅋㅋ" } } """; URL url = new URL(targetUrl); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("POST"); con.setRequestProperty("Authorization", "12345"); con.setRequestProperty("Content-Type", "application/json"); con.setDoOutput(true); BufferedWriter br = new BufferedWriter(new OutputStreamWriter(con.getOutputStream())); br.write(body + "\n"); br.flush(); br.close(); int responseCode = con.getResponseCode(); BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String line; StringBuffer response = new StringBuffer(); while ((line = in.readLine()) != null) { response.append(line); } in.close(); System.out.println("HTTP response code : " + responseCode); System.out.println("HTTP body : " + response.toString()); } }

SDK 를 사용한 방법

import net.nurigo.sdk.NurigoApp; import net.nurigo.sdk.message.model.Message; import net.nurigo.sdk.message.request.SingleMessageSendingRequest; import net.nurigo.sdk.message.response.SingleMessageSentResponse; import net.nurigo.sdk.message.service.DefaultMessageService; public class MyApp { public static void main(String[] args) { DefaultMessageService messageService = NurigoApp.INSTANCE.initialize("NCSWVPR5Y8VASQWU", "LY66AWPMYSQLIOPK3MCKBUQFNXANPEGX", "https://api.coolsms.co.kr"); Message message = new Message(); // 발신번호 및 수신번호는 반드시 01012345678 형태로 입력되어야 합니다. message.setFrom("01090949506"); message.setTo("01090949506"); message.setText("안녕하세요. 최재원입니다"); SingleMessageSendingRequest body = new SingleMessageSendingRequest(message); SingleMessageSentResponse responseBody = messageService.sendOne(body); System.out.println(responseBody); } }
Share article

jjack1