본문 바로가기

Daily Sample

[Day17] Android Naver Open API App만들기 소스

TITLE : Android Naver Open API App 

Date : 2010/08/03

Writen by Dayyoung 

Description : 

This is Source that make the App find chipest product by Naver Open API

Download Link : 

Reference Site: api.naver.com

자료를 제공하는 서비스업체들이 내부 API를 공개하는 것이  최신 트랜드이다.

물론,  웹서비스를 HttpClient로 긁어서 사용하는 것도 대안이 있을 수 있겠지만,

Open API를 통해서 가져온다면 훨씬 깨끗하고 양질의 XML 자료를 제공받을 수 있다.

물론, 한정된 횟수 내에서 ㅡ 본 예제에 쓰인 API Key는 하루에 10000번의 제한이 있다.

( key를 돌려쓴다면 무제한이겠지만 ) 

1. MainActivity는 단순히 입력받은 스트링 값을 Bundle객체에 담아서 다음 객체로 보낸다.  

 Intent intent = new Intent (MainActivity.this,PriceListActivity.class);      
    Bundle myData = new Bundle();    
             myData.putString(“key”, textView.getText().toString());           
             intent.putExtras(myData);       
    startActivity(intent);

 

2. 전달받은 String 검색어와 Naver Open Key값을 이용하여, NaverParser 클래스에 던지고,

결과값은 ArrayList<XmlData>으로 받아서 ListView에 뿌려진다. 

 naverPaser = new NaverParser(key1);  

//네이버 인증 키

 Intent intent = getIntent();

  Bundle myBundle = intent.getExtras();  

Data = myBundle.getString(“key”); 

//검색값 가져오기  

getNewList(Data,count);  

//처음 5개 화면

 

3. NaverParser 클래스는 네이버 Open API를 사용하기 위해 만든 클래스이고,

정보를 가져오기 위해서는 네이버 Open API싸이트에서 미리 반환값에 대한 정보를 확인해야 한다.

  네이버 쇼핑 Open API 문서 일부 : http://dev.naver.com/openapi/apis/data/shop

 

// XML 결과물 파싱하기
  try {

   URL text = new URL(
     ”http://openapi.naver.com/search?key=”+key1+”&query=”
       + m_searchTxt + “&display=” + count
       + “&start=1&target=shop&sort=asc”);

다음과 같이 URL 에 키값과 Query값으로 조합되서 던지면, 결과값이 API 문서 형식으로 반환된다.  

 4. NaverParser를 이용해 반환된 ArrayList<XmlData>는 CustomAdapter가 적용되서 ListView에 뿌려진다.

한번에 모든 결과값을 불러올 수 없으므로, 더보기 기능을 구현하여 리스트뷰 마지막줄에 추가한다.

 @Override
   public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
     long arg3) {
    // TODO Auto-generated method stub

    int Last = adapter.getCount();
    //adapter 전체 갯수 카운터

    Log.i(“NET”, Last + “Parsing…”);

    if ((Last – 1) == arg2) {
     count = count + 5;     
     getNewList(Data,count);       
     //더보기를 클릭했을 때, 카운터를 5 증가시키고 GetNewList()
     
    }  //즉,  마지막 뷰 (아답터의 갯수 -1) 를 클릭했을 때 Conunt를 증가시키고 , GetNewList를 호출한다.

 

5. 마지막 줄이 아닌경우 선택된 뷰의 정보를  StringArray값을 Bundle객체에 담아서,

DetailActivity를 호출 하게된다.

else
    {       
     String[] StringArrayData = StringArrayData(arg2);      
     Intent intent = new Intent (PriceListActivity.this,DetailActivity.class);      
     Bundle myData = new Bundle();          
     myData.putStringArray(“key”,StringArrayData);    
     intent.putExtras(myData);       
     startActivity(intent);      
    }

 

* 자료를 가져가실 때에는 출처를 밝혀주시고, 본 소스에 포함된 API키는 언제든지 삭제될 수 있습니다. 

Creative Commons License
이 저작물은 크리에이티브 커먼즈 저작자표시 3.0 Unported 라이선스에 따라 이용할 수 있습니다.