Windows DOS cmd
curl "https://openapi.naver.com/v1/krdict/romanization?query=%EC%9D%B4%EB%8C%80%EB%B2%94" -H "X-Naver-Client-Id: 7N5QRQ2qyBTsccN9JDea" -H "X-Naver-Client-Secret: 5iruByskUW" -v
-- HTML --
-- open_api_naver.html --
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
</head>
<body>
<pre>
<form id="send_post">
<input type="text" name="dsp_type" value="0">
<input type="text" name="hname" value="이대범">
<input type="button" id="send" value="#전송#">
</form>
<span id="result" style="border: solid red 1px;">결과</span>
</pre>
<script type="text/javascript">
//~ script start ~
// 유효성 검사
"use strict";
$(document).ready(function()
{
console.log("페이지 시작~");
//-- JSON to String 스크립트 예제 --
var json_1 = { name: "Lee Digital", age : "30"};
var json_str_1 = JSON.stringify( json_1 );
console.log ( json_1 );
console.log ( json_str_1 );
//-- String to JSON 스크립트 예제 --
var json_1 = '{ "name": "Lee Digital", "age" : "30"}';
var str_1 = JSON.parse( json_1);
console.log( str_1 );
// API Called
$("#send").click(function()
{
var param = $("#send_post").serialize();
console.log(param);
$.ajax(
{
//url : '/han_roma_api_process'
url : '/open_api_naver_roma_process.jsp'
, type : 'post'
, data : param
, contentType : 'application/x-www-form-urlencoded; charset=UTF-8'
, dataType : 'html'
, success : function (result)
{
console.log( result );
$("#result").html(result);
}
});
});
});
// ~ script end ~
</script>
</body>
</html>
-- JSP --
-- open_api_naver_roma_process.jsp --
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ page import="java.io.BufferedInputStream" %>
<%@ page import="java.io.BufferedReader" %>
<%@ page import="java.io.ByteArrayOutputStream" %>
<%@ page import="java.io.IOException" %>
<%@ page import="java.io.InputStream" %>
<%@ page import="java.io.InputStreamReader" %>
<%@ page import="java.io.UnsupportedEncodingException" %>
<%@ page import="java.net.HttpURLConnection" %>
<%@ page import="java.net.MalformedURLException" %>
<%@ page import="java.net.URL" %>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="java.nio.charset.Charset" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ page import="org.json.JSONArray" %>
<%@ page import="org.json.JSONObject" %>
<%
String hname = request.getParameter("hname");
String dsp_type = request.getParameter("dsp_type");
out.print(naver_han_roma(hname, dsp_type));
%>
<%!
/**
*
* @param called_name
* @return
* @throws Exception
*/
public String naver_han_roma(String called_name, String dsp_type) throws Exception
{
String clientId = "7N5QRQ2qyBTsccN9JDea"; // 애플리케이션 클라이언트 아이디값";
String clientSecret = "5iruByskUW" ; // 애플리케이션 클라이언트 시크릿값";
String result = "";
String text = null;
try {
text = URLEncoder.encode(called_name, "UTF-8");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("검색어 인코딩 실패",e);
}
String apiURL = "https://openapi.naver.com/v1/krdict/romanization?query="+ text;
Map<String, String> requestHeaders = new HashMap<>();
requestHeaders.put("X-Naver-Client-Id", clientId);
requestHeaders.put("X-Naver-Client-Secret", clientSecret);
String responseBody = get(apiURL,requestHeaders);
System.out.println( "==>> " + responseBody);
if( "errorMessage".contentEquals(responseBody))
result = responseBody; // 1 : 단일출력, 0 : 전체 출력
else
result = display_roma( responseBody,"aResult","sFirstName","aItems","name", dsp_type ); // 1 : 단일출력, 0 : 전체 출력
return result;
}
/**
* json 3차배열 parser
* @param json_data
* @param div_txt_1
* @param dsp_nm_1
* @param div_txt_2
* @param dsp_nm_2
* @param flag
* @return
* @throws Exception
*/
public static String display_roma( String json_data, String div_txt_1, String dsp_nm_1, String div_txt_2, String dsp_nm_2, String flag ) throws Exception
{
// JSONObjet : key-value
JSONObject jObject = new JSONObject(json_data); // json 전체 데이터
JSONArray jArray = jObject.getJSONArray(div_txt_1); // 1번째 분할
String sFirstName;
String divide = "\n";
String result = "";
// div_txt_1 기준으로 배열 출력
for (int i = 0; i < jArray.length(); i++)
{
JSONObject obj = jArray.getJSONObject(i);
sFirstName = obj.getString(dsp_nm_1);
// div_txt_2 기준으로 배열 출력 sub json array
JSONArray subArray = obj.getJSONArray(div_txt_2);
System.out.println( "json : " + subArray.toString().replaceAll("]","").replace("[","") );
for (int j = 0; j < subArray.length(); j++)
{
if( "1".equals(flag) ) divide = "";
if( j == 0 ) result += divide;
result += subArray.getJSONObject(j).getString(dsp_nm_2) + divide;
//System.out.println("name(" + j + "): " + subArray.getJSONObject(j).getString(dsp_nm_2)); // debug
if( "1".equals(flag) ) break;
else continue;
}
}
// 결과값 파싱
return result.replaceAll("\n","").replaceAll("]","").replace("[","");
}
/**
*
* @param apiUrl
* @param requestHeaders
* @return
*/
public static String get(String apiUrl, Map<String, String> requestHeaders){
HttpURLConnection con = connect(apiUrl);
try {
con.setRequestMethod("GET");
for(Map.Entry<String, String> header :requestHeaders.entrySet()) {
con.setRequestProperty(header.getKey(), header.getValue());
}
int responseCode = con.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) { // 정상 호출
return readBody(con.getInputStream());
//return con.getInputStream().toString();
} else { // 에러 발생
return readBody(con.getErrorStream());
}
} catch (IOException e) {
throw new RuntimeException("API 요청과 응답 실패", e);
} finally {
con.disconnect();
}
}
/**
*
* @param apiUrl
* @return
*/
private static HttpURLConnection connect(String apiUrl)
{
try {
URL url = new URL(apiUrl);
return (HttpURLConnection)url.openConnection();
} catch (MalformedURLException e) {
throw new RuntimeException("API URL이 잘못되었습니다. : " + apiUrl, e);
} catch (IOException e) {
throw new RuntimeException("연결이 실패했습니다. : " + apiUrl, e);
}
}
/**
*
* @param body
* @return
*/
private static String readBody(InputStream body)
{
InputStreamReader streamReader = new InputStreamReader(body);
try (BufferedReader lineReader = new BufferedReader(streamReader)) {
StringBuilder responseBody = new StringBuilder();
String line;
int count = 0;
while ((line = lineReader.readLine()) != null) {
if( count > 0) break;
responseBody.append(line);
System.out.println("line : " + line);
count++;
}
return responseBody.toString();
} catch (IOException e) {
throw new RuntimeException("API 응답을 읽는데 실패했습니다.", e);
}
}
%>
|