안녕하세요.
스틱 코드를 통해서 네이버 검색 API를 빠르게 구현하는 방법을 공유하겠습니다.
아래 스틱 코드 공개 포스팅을 보시면 코드를 확인하실 수 있습니다.
stickode.com/detail.html?no=1985
사전 준비 사항
1. 스틱 코드 회원가입
(https://stickode.com/signup.html)
2. 안드로이드 스튜디오에 스틱 코드 설치 및 로그인
(https://stickode.com/howto.html#jetbrains_installation)
1. 네이버 Developers 애플리케이션 등록
네이버 Developers 웹사이트에 로그인 후 애플리케이션을 등록해야 API 사용이 가능합니다.
안드로이드 앱 패키지 이름 확이 방법 - AndroidManifest.xml 에서 package 확인
2. 네이버 Developers 애플리케이션 정보 확인
내 애플리케이션에 musicPlayer로 등록된 것을 확인할 수 있다.
Client ID와 Client Secret 정보를 활용하여 네이버 검색 API를 구현할 수 있습니다.
3. 구현 화면
네이버 뉴스, 책, 카페, 지식 IN 카테고리를 선택하고
검색어를 입력하면 내용이 출력되도록 구현하겠습니다.
4. 인터넷 사용 퍼미션 등록
<uses-permission android:name="android.permission.INTERNET" />
5. 구현 중요 코드
- 검색 버튼 클릭 이벤트 코드
//검색
searchIb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SearchNews(category, String.valueOf(searchEt.getText()));
}
});
검색 버튼 클릭 시 카테고리와 검색어를 매개변수로 포함하여 SearchNews() 메서드를 호출한다.
- 네이버 검색 API 요청 코드
private void SearchNews(final String _category, final String searchWord)
{
if(_category.equals("") && _category != null)
{
Toast.makeText(getApplicationContext(), "카테고리를 선택해주세요.",
Toast.LENGTH_SHORT).show();
}
else if(searchWord.equals("") && searchWord != null)
{
Toast.makeText(getApplicationContext(), "검색어를 입력해주세요.",
Toast.LENGTH_SHORT).show();
}
else
{
new Thread() {
@Override
public void run() {
String clientId = "클라이언트 아이디";//애플리케이션 클라이언트 아이디값";
String clientSecret = "클라이언트 시크릿";//애플리케이션 클라이언트 시크릿값";
try {
String text = URLEncoder.encode(searchWord, "UTF-8");
String apiURL = "https://openapi.naver.com/v1/search/" + _category + "?query=" + text +"&display=20"; // json 결과
//String apiURL = "https://openapi.naver.com/v1/search/blog.xml?query="+ text; // xml 결과
URL url = new URL(apiURL);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("X-Naver-Client-Id", clientId);
con.setRequestProperty("X-Naver-Client-Secret", clientSecret);
int responseCode = con.getResponseCode();
BufferedReader br;
if (responseCode == 200) { // 정상 호출
br = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
} else { // 에러 발생
br = new BufferedReader(new InputStreamReader(con.getErrorStream()));
}
String inputLine;
response = new StringBuffer();
while ((inputLine = br.readLine()) != null) {
response.append(inputLine);
response.append("\n");
}
br.close();
String naverHtml = response.toString();
Bundle bun = new Bundle();
bun.putString("NAVER_HTML", naverHtml);
Message msg = handler.obtainMessage();
msg.setData(bun);
handler.sendMessage(msg);
//testText.setText(response.toString());
//System.out.println(response.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
}
위에서 발급받은 Client ID와 Client Secret 정보를
clientId 변수와 clientSecret 변수에 각각 값으로 넣으면 됩니다.
그러면 검색 버튼을 클릭할 때마다 네이버 서버로 검색 정보를 보내달라는 요청을 보내게 됩니다.
6. 리싸이클러 뷰 라이브러리 추가
검색 결과를 리싸이클러 뷰로 구현했으므로,
리싸이클러 뷰에 필요한 라이브러리 추가 작업이 필요합니다.
7. toolbar 설정
뉴스 Activity에서는 toolbar를 사용하므로 Manifast.xml 설정 추가
android:theme="@style/AppTheme.NoActionBar" 추가
8. 스틱 코드에서 코드 불러오기
전체 코드는 아래 스틱 코드 공개 포스팅으로 통해서 확인 가능합니다.
아래 공개 포스팅을 즐겨 찾기 하시면 바로 안드로이드 스튜디오에서 불러와 사용이 가능합니다.
stickode.com/detail.html?no=1985
스틱 코드로 코드 불러오기
코드 명을 입력하면 코드 목록이 나옵니다.
코드 목록에서 불러오고자 하는 코드를 클릭하면 해당 코드가 불러와집니다.
전체 코드 파일 목록
- java 파일
- newsActivity
- RecyclerNewsSearchAdapter
- NewsRecyclerItem
- xml 파일
- activity_news.xml
- activity_recycler_item.xml
네이버 API를 사용하면 양질에 데이터를 쉽게 받아와서 앱에 활용할 수 있을 것 같네요.
'안드로이드 자바' 카테고리의 다른 글
[Java][Android] 정규표현식 알아보기 (0) | 2021.04.02 |
---|---|
[JAVA][안드로이드] 앨범에서 다중 이미지 불러오기 (4) | 2021.04.01 |
[JAVA][안드로이드] 간단 사이드 메뉴바 (Navigate Drawer) 구현 (3) | 2021.03.30 |
[JAVA][안드로이드] 그림판 앱 구현하기 (0) | 2021.03.29 |
[JAVA][안드로이드] 브로드캐스트 리시버를 사용해 이어폰 연결 상태 체크하기 (0) | 2021.03.28 |