이번 포스팅에서는 네이버 검색 API를 안드로이드에서 사용하는 방법에 대해 알아보자.
네이버 검색 API란?
블로그나 지역 검색 등 네이버에서 주로 사용하는 검색 정보를 띄워주는 API이다. 최근에 본 사용 예제로는 맛집앱이 있었다. 특정 맛집을 클릭하면, 그 맛집 상세 페이지에 네이버 블로그 검색 결과를 띄워주는 식. 사용자 입장에서는 앱에서 정보 확인도 하고, 네이버 검색 결과도 한번에 볼 수 있으니 무척 편리할 것이다.
보다시피, 그 외에도 다양한 검색 기능을 제공한다.
본론으로 넘어가서, 이제 네이버 검색 API를 안드로이드에 적용해보도록 하자.
1. 네이버 검색 API 신청 (https://developers.naver.com/products/search/)
위 페이지로 접속하여, 아래와 같이 오픈 API신청을 한 후 클라이언트 키값을 받아야한다.
어플리케이션 이름, 그리고 서비스 환경을 선택 후 생성한다. 그럼 내 애플리케이션 페이지에서 아래와 같이 클라이언트 값들을 확인할 수 있다.
2. 구현하고자 하는 Activity에 다음 함수를 삽입한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | public void searchNaver(final String searchObject) { // 검색어 = searchObject로 ; final String clientId = "CLIENT_ID";//애플리케이션 클라이언트 아이디값"; final String clientSecret = "CLIENT_SECRET_KEY";//애플리케이션 클라이언트 시크릿값"; final int display = 5; // 보여지는 검색결과의 수 // 네트워크 연결은 Thread 생성 필요 new Thread() { @Override public void run() { try { String text = URLEncoder.encode(searchObject, "UTF-8"); String apiURL = "https://openapi.naver.com/v1/search/blog?query=" + text + "&display=" + display + "&"; // json 결과 // Json 형태로 결과값을 받아옴. 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); con.connect(); int responseCode = con.getResponseCode(); if(responseCode==200) { // 정상 호출 br = new BufferedReader(new InputStreamReader(con.getInputStream())); } else { // 에러 발생 br = new BufferedReader(new InputStreamReader(con.getErrorStream())); } searchResult = new StringBuilder(); String inputLine; while ((inputLine = br.readLine()) != null) { searchResult.append(inputLine + "\n"); } br.close(); con.disconnect(); String data = searchResult.toString(); String[] array; array = data.split("\""); String[] title = new String[display]; String[] link = new String[display]; String[] description = new String[display]; String[] bloggername = new String[display]; String[] postdate = new String[display]; int k = 0; for (int i = 0; i < array.length; i++) { if (array[i].equals("title")) title[k] = array[i + 2]; if (array[i].equals("link")) link[k] = array[i + 2]; if (array[i].equals("description")) description[k] = array[i + 2]; if (array[i].equals("bloggername")) bloggername[k] = array[i + 2]; if (array[i].equals("postdate")) { postdate[k] = array[i + 2]; k++; } } Log.d(TAG, "title잘나오니: " + title[0] + title[1] + title[2]); // title[0], link[0], bloggername[0] 등 인덱스 값에 맞게 검색결과를 변수화하였다. } catch (Exception e) { Log.d(TAG, "error : " + e); } } }.start(); } |
Client ID와 secret Key는 첫번째 단계에서 본인이 받은 값을 입력해넣으면 된다. 함수를 작성했다면, Activity에서 본인이 원하는 검색어를 searchObject로 지정하고 사용하면 된다.
결과값은 다음과 같다.
title: 블로그 제목
link: 블로그 글 URL 링크
description: 블로그 글 내용
bloggername: 블로그 주인장 닉네임
postdate: 블로그 글 작성일
이런 형태로 저장되며, 위 예시에서는 결과값을 5개만 노출되게 해놨기 때문에, 각 변수별로 끝에 인덱스값만 붙이면 검색결과를 앱에서 사용할 수 있다.
(ex. title[0] : 첫번째 검색결과의 블로그 글 제목 /// postdate[3]: 네번째 검색 결과 블로그 글의 작성일)
'Developer > Android, Java' 카테고리의 다른 글
[안드로이드] Retrofit 기본 예제 (서버 통신) (260) | 2019.03.21 |
---|---|
[안드로이드] EditText 키보드 숨기는 기능 (자동으로 키보드 뜨는 것 방지) (258) | 2019.03.19 |
[안드로이드] ConstraintLayout, Guideline을 이용하여 삽입 개체 크기 비율 조절 (271) | 2019.03.19 |
[안드로이드] 지하철 역 클릭 시 이벤트 구현하기 1편 (258) | 2019.01.11 |
[안드로이드] 커스텀 ListView 예제 (네이버 검색 API 결과적용) (269) | 2019.01.09 |
댓글