최근 개인 프로젝트를 하나 진행할 일이 있어, 안드로이드용으로 unit test를 진행하던중 검색 엔진을 직접 사용하는 방법에 대해서 한번 정리가 필요할 것 같아서 정리해본다.
그 첫 번째 포스팅으로 이번은 DAUM api에 한해서만 정리한다.
일단 DAUM에서 제공하는 API를 사용하려면 다음 주소로 가서 한번 전체적으로 쑤욱 훓어봐야 한다.
http://dna.daum.net/apis/view_all --> 여기는 전체 API들이 나오는곳
http://dna.daum.net/apis/search --> 검색 API는 여기로~~
나는 검색 엔진만 사용할것이니까, 검색 API로 가서 한번 쑥 훓어보고 왔다. 사실 별거 없었다 .=_=
package com.hopeisagoodthing.searchtool; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.util.Log; public class DaumSearch implements ISearch { private static final String TAG = "DaumSearch"; private static final String BASE_URL = "http://apis.daum.net/search/"; private static final String[] TARGETS=new String[]{"web?","blog?","board?","cafe?",}; private static final String API_KEY="여기에자신의api key값을 넣어주면 됨"; private static final String OUTPUT = "json"; private static final class PARAM{ private static final String API_KEY = "apikey="; // always start with this parameter!!! private static final String OUTPUT = "&output="; private static final String QUERY = "&q="; private static final String RESULT = "&result="; } private static final String CHANEL = "channel"; // json obj private static final String ITEM = "item"; // json array. private static final String DESC = "description"; // json obj private final List<String> mAnalyzedList = new ArrayList<String>(); @Override public List<String> getAnalyze(final String query, final int resultSize, final IAnalyzer analyzer) { mAnalyzedList.clear(); final StringBuilder builder = new StringBuilder(); for(String target:TARGETS) { URL url = null; try { url = new URL( BASE_URL + target + PARAM.API_KEY+ API_KEY + PARAM.OUTPUT + OUTPUT+ PARAM.QUERY + URLEncoder.encode(query, "UTF-8") + PARAM.RESULT+resultSize); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } builder.setLength(0); try { String line = null; URLConnection connection = null; BufferedReader reader = null; connection = url.openConnection(); //connection.addRequestProperty("Referer", /* Enter the URL of your site here */); reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); while((line = reader.readLine()) != null) { builder.append(line); } } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } try { Log.e(TAG,"DAUM Result START============================================================"); //Log.e(TAG,builder.toString()); final JSONObject json = new JSONObject(builder.toString()); final JSONObject resultsJson = json.getJSONObject(CHANEL); final JSONArray resultArray = resultsJson.getJSONArray(ITEM); final int arraySize = resultArray.length(); for(int i = 0; i< arraySize ; i++) { final JSONObject result = resultArray.getJSONObject(i); final String content = result.getString(DESC); analyzer.analyze(content,mAnalyzedList); } Log.e(TAG,"DAUM Result END ============================================================"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return mAnalyzedList; } }
'코딩하고 > Android' 카테고리의 다른 글
ActionBar로 Tab 만들기 (19) | 2012.10.19 |
---|---|
App에서 SystemProperties 가지고 오는 방법 (1) | 2012.10.18 |
검색 API 사용하기 - twitter api (0) | 2012.10.05 |
검색 API 사용하기 - google api (0) | 2012.10.05 |
검색 API 사용하기 - naver api. (2) | 2012.10.04 |