네이버 영화 검색 openAPI 활용
https://developers.naver.com/docs/search/movie/
MovieServiceJSON.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class MovieServiceJSON
*/
@WebServlet("/MovieServiceJSON")
public class MovieServiceJSON extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public MovieServiceJSON() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String clientId = "YOUR_CLIENT_ID";//애플리케이션 클라이언트 아이디값";
String clientSecret = "YOUR_CLIENT_SECRET";//애플리케이션 클라이언트 시크릿값";
String text = request.getParameter("query");
try {
text = URLEncoder.encode(text, "UTF-8"); // 한글화
String apiURL = "https://openapi.naver.com/v1/search/movie.json?query="+ text; // json 결과
//String apiURL = "https://openapi.naver.com/v1/search/blog.xml?query="+ text; // xml 결과
URL url = new URL(apiURL);
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("X-Naver-Client-Id", clientId);
con.setRequestProperty("X-Naver-Client-Secret", clientSecret);
int responseCode = con.getResponseCode();
BufferedReader br;
if(responseCode==200) { // 정상 호출
br = new BufferedReader(new InputStreamReader(con.getInputStream()));
} else { // 에러 발생
br = new BufferedReader(new InputStreamReader(con.getErrorStream()));
}
String inputLine;
StringBuffer sb = new StringBuffer();
while ((inputLine = br.readLine()) != null) {//br.readLine()가 널이 아닐때만 inputLine에 br.readLine()값 집어넣고 while문 실행
sb.append(inputLine);
}
br.close();
//System.out.println(sb.toString());
//json으로 보내줘야해.. 어.. 어케보내주지
response.setContentType("text/html;charset=UTF-8");
response.getWriter().print(sb.toString());
response.getWriter().close();
} catch (Exception e) {
System.out.println(e);
}
}
}
searchMovieJSON.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#search").click(function() {
$.ajax({
url : "<c:url value="/MovieServiceJSON"/>",
type : "post",
dataType : "json",
data : {
query : $("#query").val()
},
success : function(json) {
$.each(json.items,function(i,item){
console.log(item.title);
$("#movieResult").append(
"<tr>"+"<td width='100'><img src='"+item.image+"'></td>"+
"<td width='300'><a href='"+item.link+"'>"+item.title+"</a></td>"+
+"</tr>"
);
});
},
error : function(err) {
alert("에러");
}
});
});
});
</script>
</head>
<body>
<input type="text" id="query" name="query">
<input type="button" id="search" value="moviesearch"><br><br>
<table id="movieResult" align="left" border="1" ></table>
</body>
</html>