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