본문 바로가기
안드로이드 자바

[Android][Java] 알라딘 API로 책 검색하기

by teamnova 2023. 2. 11.
728x90

안녕하세요. 이번 시간에는 알라딘 상품 검색 API를 사용하여 책에 대한 데이터를 가져와보겠습니다.

결과부터 보여드리겠습니다.

 

책 검색 화면
받아온 값(xml)


 

목차

1. 알라딘 Open API 매뉴얼

2. http request - retrofit

3. http response

 

 

 

1. 알라딘 Open API 매뉴얼 

1-1. 공식 사이트

https://docs.google.com/document/d/1mX-WxuoGs8Hy-QalhHcvuV17n50uGI2Sg_GHofgiePE/edit#

 

알라딘 Open API 매뉴얼

1. 요청 (Request) 1) 상품 검색 API 2) 상품 리스트 API 3) 상품 조회 API 4) 중고상품 보유 매장 검색 API 2. 응답 (Response) 1) 상품 검색/상품 리스트/상품 조회 API 2) 상품 조회 API : 부가정보 3) 중고상품 보

docs.google.com

API 사용하는 방법을 참고하세요.

 

 

1-2. TTB key

TTB key를 등록한다.

요청보낼 때 key를 필수로 입력해야하기 때문에 꼭 인증키를 받습니다. 

 

 

 

 

 

2. request - retrofit

https://stickode.tistory.com/42

 

[Java][Android] retrofit2 사용법

오늘은 레트로핏2 라이브러리를 이용해서 서버와 통신하는 방법에 대해 알아보겠습니다. Gradle 의존성 추가 레트로핏2 라이브러리를 사용하기 위해 build.gradle(app) 파일에 retrofit 라이브러를 추가

stickode.tistory.com

retrofit사용법을 참고하시기 바랍니다. 

 

 

2-1. serchView

// 책 검색 이벤트 (검색버튼 / 입력한 글자)
binding.searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
    @Override
    public boolean onQueryTextSubmit(String query) {

        Toast.makeText(getApplicationContext(), "[검색버튼클릭] 검색어 = "+query, Toast.LENGTH_LONG).show();
        clickSearch(query); // 알라딘 api

        return true;
    }

    @Override
    public boolean onQueryTextChange(String newText) {
        return true;
    }
});

'싱아는' 이라는 단어를 검색했다면 String query에 값이 담기게 됩니다. 

 

 

 

2-2. interface 구현

get메소드

 

 

3. http response

// 알라딘 책 검색 api를 통해 책 목록을 받아옴
private void clickSearch(String keyword) { Log.e(TAG, "clickSearch() keyword : "+keyword);

    RetrofitAladin retrofitAladin = RetrofitAladin.getInstance(); // baseUrl에 "https://www.aladin.co.kr/ttb/api/"를 넣는다
    HttpRequest httpRequest_aladin = retrofitAladin.getRetrofitInterface(); 


    // 요청 메소드 이름 : getSearchBook
    httpRequest_aladin.getSearchBook(ttbkey, keyword).enqueue(new Callback<String>() {
        @SuppressLint("NotifyDataSetChanged")
        @Override
        public void onResponse(Call<String> call, retrofit2.Response<String> response) {


            Log.e(TAG, "onResponse: " + response.body());
            
        }

        @Override
        public void onFailure(Call<String> call, Throwable t) {
            Log.e(TAG, "onFailure: " + t.getMessage());
        }
   });


}

response.body()를 출력하면 위에서 보여드렸던 데이터가 나오게됩니다. 

 

받아온 값(xml)