본문 바로가기
Java

POST방식으로 url 호출하는법(+문자API 연결하는법)

by 준토리73 2021. 4. 15.

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로 보낼거라고 선언 -> 파라미터 넘겨줌 

 

 

댓글