Naver api for android

3,931 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,931
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
21
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Naver api for android

  1. 1. Naver API for AndroidS.O.LAB develop by 이상온
  2. 2. 네이버 오픈API를 활용한 백과사전 앱목표 : 네이버 오픈API를 활용하여 백과사전 검색 Android App을 만든다.Step 1네이버 개발자센터 등록및 키 발급 http://dev.naver.com/
  3. 3. 오픈API -> 검색어API -> 백과사전
  4. 4. 키 등록/관리 -> 검색API -> 키추가
  5. 5. 키 등록/관리 -> 검색API -> 키추가
  6. 6. 키 등록/관리 -> 검색API -> 키추가 검색API 사용을 위한 키(key)는 바로 발급이 된다.하루에 사용할수 있는 쿼리의 제한이 있다. 하루25000쿼리
  7. 7. 네이버API 발급키 이용한 TEST쿼리- 샘플 URL독도를 검색할 경우 :http://openapi.naver.com/search?key= 14a5a7f022650cc46f4a20867abb4fde&query=%EB%8F%85%EB%8F%84&target=encyc&start=1&display=10
  8. 8. 네이버API 쿼리 결과 코드<?xml version="1.0" encoding="UTF-8" ?>- <rss version="2.0">- <channel><title>Naver Open API - encyc ::독도</title><link>http://search.naver.com</link><description>Naver Search Result</description><lastBuildDate>Mon, 20 Jul 2009 13:11:39 +0900</lastBuildDate><total>189</total><start>1</start><display>10</display>- <item> <title><b>독도</b></title> <link>http://openapi.naver.com/l?AAADXHsQqAIBRA0a95jmJq5uJQlP8R+kKH1MQC/76W4A7ntl7QYHLdkTt6IyepOLlurN3AtoC2oMcfkoSKhwmtFRAzcPs1MEbT/mClLp//hwTC+uyiB7FKrUb1Art54r9nAAAA</link> <description>경상북도 울릉군 울릉읍 <b>독도</b>리에 있는 섬. | 위치 : 경상북도 울릉군 울릉읍 <b>독도</b>리1~96 번지 | 경위도 : 동도(동경 131도 52분 10.4초, 북위 37도 14분 26.8초), 서도(동경 131도 51분 54.6초, 북위 37도 14분 30.6초) |면적 : 187,554㎡(동...</description> <thumbnail>http://sstatic.naver.com/search/100_thumb_nx3/7/1304007.jpg</thumbnail></item>- <item> <title><b>독도</b></title> <link>http://openapi.naver.com/l?AAACupLEi1Tc1LrkxWK81MsTUxNzEzUissTS2qtFV1dVK1cFO1MIUxTNQyilLTbDNKSgpUjR1VjdyAKDtfrzwzO7MgNSUzUS+/KB0oBOKDJU2B+oxMLUAsoCEoXBMAOybjnngAAAA=</link> <description> <b>독도</b>(獨島)는 동해 가운데, 대한민국울릉도 동남쪽에 있는 섬으로, 동도와 서도를 포함하여 총91개의 크고 작은 섬들로 이루어져 있다.[1][2] 해방 이후 현재까지 대한민국이 실효 지배하고 있으며, 행정구역 상으로 ...</description> <thumbnail /></item>개별 검색 결과이며, title, link, description, thumbnail 을 포함합니다
  9. 9. 네이버API 백과사전 앱 실습Step 2Android app 생성및 화면 구성
  10. 10. 네이버API 백과사전 앱 실습
  11. 11. 네이버API 백과사전 앱 실습 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> <LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content"> <EditText android:id="@+id/input01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="Enter URL String ..." android:textSize="14sp" /> <Button android:id="@+id/requestBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Request" android:textSize="14sp" android:textStyle="bold" /> </LinearLayout> <ScrollView android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:id="@+id/txtMsg" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ff99ccee" android:textColor="#ff0000ff" android:textSize="12sp" /> </ScrollView> </LinearLayout> </RelativeLayout>
  12. 12. 네이버API 백과사전 앱 실습 Step 3 MainActivity.java codingpublic static String defaultUrl = "http://openapi.naver.com/search";static final String mykeycode =“****************************";final EditText input01 = (EditText)findViewById(R.id.input01); input01.setText("apple"); final TextView txtMsg = (TextView) findViewById(R.id.txtMsg); Button requestBtn = (Button) findViewById(R.id.requestBtn); requestBtn.setOnClickListener(new OnClickListener() { @SuppressWarnings("deprecation")public void onClick(View v) { String tempquery = input01.getText().toString(); String makeURL=""; makeURL = String.format(defaultUrl + "?key=%s&query=%s&target=encyc&start=1&display=10", mykeycode , URLEncoder.encode(tempquery)); txtMsg.setText(makeURL); String output = request(makeURL); txtMsg.setText(output); } });
  13. 13. 네이버API 백과사전 앱 실습private String request(String urlStr) { StringBuilder output = new StringBuilder(); try { URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); if (conn != null) { conn.setConnectTimeout(10000); conn.setRequestMethod("GET"); conn.setDoInput(true); conn.setDoOutput(true); int resCode = conn.getResponseCode(); if (resCode == HttpURLConnection.HTTP_OK) { BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())) ; String line = null; while(true) { line = reader.readLine(); if (line == null) { break; } output.append(line + "n"); } reader.close(); conn.disconnect(); } } } catch(Exception ex) { Log.e("SampleHTTP", "Exception in processing response.", ex); } return output.toString(); }
  14. 14. 네이버API 백과사전 앱 실습
  15. 15. 네이버API 백과사전 앱 실습 Step 4 DOM parser 를 이용하여 파싱된 데이터 보여주기public static String defaultUrl = "http://openapi.naver.com/search";static final String mykeycode =“******************************";public static String parsingresult="";String xml = output.toString();DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();InputStream istream = new ByteArrayInputStream(xml.getBytes("utf-8"));Document doc = builder.parse(istream);Element order = doc.getDocumentElement(); //루트 엘리먼트를 구한다.NodeList items = order.getElementsByTagName("title");
  16. 16. 네이버API 백과사전 앱 실습private String request(String urlStr) { StringBuilder output = new StringBuilder(); try { URL url = new URL(urlStr); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); if (conn != null) { conn.setConnectTimeout(10000); conn.setRequestMethod("GET"); conn.setDoInput(true); conn.setDoOutput(true); int resCode = conn.getResponseCode(); if (resCode == HttpURLConnection.HTTP_OK) { BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())) ; String line = null; while(true) { line = reader.readLine(); if (line == null) { break; } output.append(line + "n"); } reader.close(); conn.disconnect(); } } String xml = output.toString();
  17. 17. 네이버API 백과사전 앱 실습DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder builder = factory.newDocumentBuilder();InputStream istream = new ByteArrayInputStream(xml.getBytes("utf-8"));Document doc = builder.parse(istream);Element order = doc.getDocumentElement();// 유일한 루트 엘리먼트를 구한다.NodeList items = order.getElementsByTagName("title");String Result = "";for (int i = 0; i < items.getLength();i++) { NodeList items2 = order.getElementsByTagName("description"); Node item2 = items2.item(i); Node text2 = item2.getFirstChild(); String ItemName2 = text2.getNodeValue(); Node item = items.item(i); Node text = item.getFirstChild(); String ItemName = text.getNodeValue(); if(i!=0) { Result += ItemName + " : " + ItemName2; } Result += "nn"; } parsingresult = Result; } catch(Exception ex) { Log.e("SampleHTTP", "Exception in processing response.", ex); } return parsingresult;}
  18. 18. 네이버API 백과사전 앱 실습

×