API/Naver

json방식으로 조회

package textbook.naverAPI;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

public class NaverSearchAPI {
		
    public String Search(String word) {
        String clientId = "your client code";//애플리케이션 클라이언트 아이디값";
        String clientSecret = "your client secret code";//애플리케이션 클라이언트 시크릿값";
        StringBuffer response = null;
        try {
            String text = URLEncoder.encode(word, "UTF-8");
            String apiURL = "https://openapi.naver.com/v1/search/book.json?query="+ text; // json 결과
//            String apiURL = "https://openapi.naver.com/v1/search/book.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;
            response = new StringBuffer();
            while ((inputLine = br.readLine()) != null) {
                response.append(inputLine);
            }
            br.close();
            
        } catch (Exception e) {
            System.out.println(e);
        }
        return response.toString();
    }
}

ajax로 컨트롤러를 요청하고 / json으로 데이터를 받아서 처리하는 방법

function bookSearch(page) {
	var url = "bookSearch.text";
	var word = $("#word").val();/* 네이버 책 검색 */
	var listArr = null;
	var data = {
		word : word,
	}

	$.ajax({
		type : "post",
		url : url,
		data : data,
		dataType : "json",
		success : function(getData) {
			console.log(getData);
			console.log(getData.total);
			var total = getData.total;
			var start = getData.start;
			var display = getData.display;
			/* 페이지= index+1 */
			$(".find").html(total);
			listArr = new Array();
			for (var i = 0; i < display; i++) {
				listArr.push(getData.items[i]);
				console.log(listArr[i].title);
			}
			var i = page-1;
			$(".title ~ p").remove();
			$(".title").after("<p>" + listArr[i].title + "</p>");
			/*문자열 태그 제거필요*/
			var titleEncode = encodeURIComponent(listArr[i].title);
			$("#book_title").val(titleEncode);
			
			
			$(".link ~ p").remove();
			$(".link").after("<p>" + listArr[i].link + "</p>");
			var linkEncode = encodeURIComponent(listArr[i].link);
			$("#book_link").val(linkEncode);
			
			
			$(".image ~ p").remove();
			$(".image").after("<p>" + listArr[i].image + "</p>");
			var imgEncode = encodeURIComponent(listArr[i].image);
			$("#book_image").val(imgEncode);
			
			$(".author ~ p").remove();
			$(".author").after("<p>" + listArr[i].author + "</p>");
			$("#book_author").val(listArr[i].author);
			
			$(".price ~ p").remove();
			$(".price").after("<p>" + listArr[i].price + "</p>");
			$("#book_price").val(listArr[i].price);
			
			$(".discount ~ p").remove();
			$(".discount").after("<p>" + listArr[i].discount + "</p>");
			$("#book_discount").val(listArr[i].discount);
			
			$(".publisher ~ p").remove();
			$(".publisher").after("<p>" + listArr[i].publisher + "</p>");
			$("#book_publisher").val(listArr[i].publisher);
			
			$(".pubdate ~ p").remove();
			$(".pubdate").after("<p>" + listArr[i].pubdate + "</p>");
			$("#book_pubdate").val(listArr[i].pubdate);
			
			$(".isbn ~ p").remove();
			$(".isbn").after("<p>" + listArr[i].isbn + "</p>");
			$("#book_isbn").val(listArr[i].isbn);
			
			$(".description ~ p").remove();
			$(".description").after("<p>" + listArr[i].description + "</p>");
			
			var encode = encodeURIComponent(listArr[i].description);
			var decode = decodeURIComponent(listArr[i].description);
			console.log(encode);
			console.log(decode);
			$("#book_description").val(encode);
			
		},
		error : function(request, status, error) {
			alert("code = " + request.status + " message = "
					+ request.responseText + " error = " + error);
			console.log(error);
		}
	});
};

 

컨트롤러에서 처리방법

 

받은 데이터는 json방식이기때문에 jsonparse API 사용해서 파싱한다음 되돌려줌.

NaverSearchAPI search = new NaverSearchAPI();
				String word = request.getParameter("word");
				String result = search.Search(word);

				JSONParser paser = new JSONParser();
				Object obj = paser.parse(result);
				JSONObject jsonObj = (JSONObject) obj;
//				bookdetail.text  jsp페이지에서 -> ${requestScope.result.items}
				request.setAttribute("result", jsonObj);

				System.out.println("get" + result);
				PrintWriter out = response.getWriter();
				out.print(jsonObj);

 

Ajax->controller->jsonparsing->return Ajax->success 파라미터로 값이 넘어오고 받아서 처리