프로젝트를 진행하던 중 다른 업체에서 제공하는 API를 호출하여 메시지를 보내거나, 메일을 보내는 달라는 요청이 와서 기존 함수를 확인해보니 제대로 작동하지 않아 참고하여 다시 만들었고 해당 내용을 공유하고자 합니다.
해당 API는 POST방식만 지원하기에 POST방식으로만 작성했습니다.
java에서 외부 api를 호출 및 사용할 때에는 java.net.*를 사용하면 됩니다.
우선 해당 URL에 연결 및 발송하는 부분을 만들어주고
// ApiConnectUtil.java
public class ApiConnectUtil {
/**
* URL로 부터 결과를 얻는다.
* @param url 파라미터를 제외한 URL
* @param params 파라미터들
* @return 결과 문자열
* @throws Exception
*/
public static String postURL(String url, String encoding, HashMap <String, String> params) {
String result = "";
try {
URL apiUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) apiUrl.openConnection();
conn.setRequestMethod("POST");
conn.setDefaultUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(true);
String type = "";
type = encoding;
if (null == encoding || "".equals(encoding)) {
type = "application/x-www-form-urlencoded";
}
conn.setRequestProperty("content-type", type);
StringBuffer buffer = new StringBuffer();
if (params != null || params.size() > 0) {
Set key = params.keySet();
for (Iterator iterator = key.iterator(); iterator.hasNext();) {
String keyName = (String) iterator.next();
String valueName = params.get(keyName);
buffer.append(keyName).append("=").append(valueName).append("&");
}
}
OutputStreamWriter outStream = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
PrintWriter writer = new PrintWriter(outStream);
writer.write(buffer.toString());
writer.flush();
InputStreamReader isr = new InputStreamReader(conn.getInputStream(), "UTF-8");
BufferedReader br = new BufferedReader(isr);
StringBuilder builder = new StringBuilder();
String str;
while ((str = br.readLine()) != null) {
builder.append(str + "\n");
}
result = builder.toString();
return result;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
}
값을 넘겨 받아 보내는 부분을 따로 만들어서 완료했습니다.
public static String sendSMS(String smsSendUrl , String userId, String passWord, String callFrom, String callTo, String smsText ) throws Exception {
HashMap < String, String > params = new HashMap<String, String>();
params.put("USERNAME", userId);
params.put("PASSWORD", passWord);
params.put("FROM", callFrom); // 발신 번호
params.put("TO", callTo); // 수신 번호
params.put("CONTENTS", smsText); // 수신 번호
String out = ApiConnectUtil.postURL(smsSendUrl, params);
System.out.println(" SEND Result !! :::::" + out);
}
'Dev > JAVA' 카테고리의 다른 글
[JAVA] 반복문과 정규식을 같이 사용하기 (XSS 대응 및 정규식 설명) (0) | 2023.08.16 |
---|---|
[JAVA] 간단한 java Mail 테스트 (메모장으로 메일 테스트) (0) | 2023.07.15 |