본문 바로가기

SW Dev Portfolio

네이버 오픈 API 사용 하는 방법 : 검색 기능 편

반응형

 

네이버에서  제공해주고 있는 API 는 엄청나게 다양하다. 

 

그 중에서 검색   > 지역 API 사용하는 방법을 알려주고자 한다. 

 

https://developers.naver.com/docs/serviceapi/search/local/local.md

 

검색 > 지역 - Search API

검색 > 지역 지역 검색 개요 개요 검색 API와 지역 검색 개요 검색 API는 네이버 검색 결과를 뉴스, 백과사전, 블로그, 쇼핑, 영화, 웹 문서, 전문정보, 지식iN, 책, 카페글 등 분야별로 볼 수 있는 API

developers.naver.com

해당 공식 문서를 보면 나오는데 

상세히 자세히 읽어보아야 알 수 있다. 

검색 API 특징 

검색 API는 비로그인 방식 오픈 API입니다.

비로그인 방식 오픈 API는 네이버 오픈API를 호출할 때 HTTP 요청 헤더에 클라이언트 아이디와 클라이언트 시크릿 값만 전송해 사용할 수 있는 오픈 API입니다. 클라이언트 아이디와 클라이언트 시크릿은 네이버 오픈API에서 인증된 사용자인지 확인하는 수단입니다. 네이버 개발자 센터에서 애플리케이션을 등록하면 클라이언트 아이디와 클라이언트 시크릿이 발급됩니다.

비로그인 방식 오픈 API 형식으로 

ID 와 Secret 코드가 필요하다 

 

 

https://developers.naver.com/main/

 

NAVER Developers

네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음

developers.naver.com

 

해당 페이지로 이동 하여

서비스 API로 이동한다 

https://developers.naver.com/products/service-api/search/search.md

 

검색 - SERVICE-API

검색 NAVER Developers - 검색 API 소개 웹, 뉴스, 블로그 등 분야별 네이버 검색 결과를 웹 서비스 또는 모바일 앱에서 바로 보여 줄 수 있습니다. 또한 ’OO역맛집’과 같은 지역 검색을 할 수도 있으

developers.naver.com

신청으로 이동한다 

필수 정보를 입력해준다. 

ID 와 Secret 을 확인하고 메모해두자 

[Java api 호출 코드  예시 ]

 public String callLocalInfoApi() throws IOException {
    	  
    	  
	    	  String clientId = ""; //애플리케이션 클라이언트 아이디
	          String clientSecret = ""; //애플리케이션 클라이언트 시크릿
	          
	          String text = null;
	          
	          try {
	              text = URLEncoder.encode("그린팩토리", "UTF-8");
	          } catch (UnsupportedEncodingException e) {
	              throw new RuntimeException("검색어 인코딩 실패",e);
	          }
	      	  
    	  	StringBuilder urlBuilder = new StringBuilder("https://openapi.naver.com/v1/search/blog?"); /*URL*/
    	    
    	   
            urlBuilder.append("&" + URLEncoder.encode("regcode_pattern","UTF-8") + "=" + URLEncoder.encode(text, "UTF-8")); /*한 페이지 결과 수 (최소 10, 최대 9999)*/
            
            Map<String, String> requestHeaders = new HashMap<>();
            
            requestHeaders.put("X-Naver-Client-Id", clientId);
            requestHeaders.put("X-Naver-Client-Secret", clientSecret);
            
            //connect

    	    URL url = new URL(urlBuilder.toString());
    	    
    	    System.out.println("APIurl : "  +url);
 
    	    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    	  
    	    
    	    conn.setRequestMethod("GET");
    	    conn.setRequestProperty("Content-type", "application/json");
    	  
    	    for(Map.Entry<String, String> header :requestHeaders.entrySet()) {
    	    	conn.setRequestProperty(header.getKey(), header.getValue());
            }

    	    
    	    System.out.println("API 응답 코드 : " + conn.getResponseCode());
    	   
    	    
    	    BufferedReader rd;
            if(conn.getResponseCode() >= 200 && conn.getResponseCode() <= 300) {
                rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            } else {
                rd = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
            }
            StringBuilder sb = new StringBuilder();
            String line;
            
            while ((line = rd.readLine()) != null) {
  				/* System.out.println(line); */
                sb.append(line);
            }
            rd.close();
            conn.disconnect();
  			/* System.out.println(sb.toString()); */
    	    return sb.toString();
    	}

예시일 뿐이니 본인의 사용법에 맞게 수정하시길 바랍니다. 

반응형