최근 개인 프로젝트를 하나 진행할 일이 있어, 안드로이드용으로 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;		
	}	
}
블로그 이미지

커뉴

이 세상에서 꿈 이상으로 확실한 것을, 인간은 가지고 있는 것일까?

,