'네이버 OepnAPI'에 해당되는 글 1건

  1. 2008.05.09 자바를 이용한 네이버 OpenAPI 사용... 2

OpenAPI에 대한 기본적인 사용법은 네이버 OpenAPI 홈페이지에 잘 나와있고 이 글에서는 자바를 이용해서 XML문서를 파싱하는 부분만 간략히 정리한다.

네이버 OpenAPI 서비스관련 페이지는 http://openapi.naver.com/ 이고 예제소스에서는 간단한 이미지검색 API를 다룬다.

기본적으로 네이버 OpenAPI는 http://openapi.naver.com/search URL에 get 방식을 이용해서 각종 변수와 값을 설정해 준 후 요청을 한다.

그리고 요청에 대한 결과를 RSS형식의 XML문서로 넘겨주는데 이것을 파싱해서 원하는 정보를 얻을 수 있다.

위의 과정을 간단히 자바코드로 나타내면 아래와 같다.

네이버 OpenAPI 페이지에서 결과화면(XML)을 보면서 소스코드를 보시면 한결 이해가 쉬울 것이다.

// 1. 질의 URL
String queryURL;
queryURL = "http://openapi.naver.com/search?key=test&query=go&target=image";

// 2. 질의요청
URL url = new URL(queryURL);
URLConnection connection = url.openConnection();
InputStream is = connection.getInputStream();

// 3. 질의결과 받기
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(is);

// 4. 파싱
Element root = doc.getDocumentElement();
if("rss".equals(root.getNodeName()))
{
	Node channel = root.getFirstChild();
	NodeList nodelist =  channel.getChildNodes();
	Node totalNode = nodelist.item(4);
	Node displayNode = nodelist.item(6);

	// channel node 전체 순회
	for(int i=0; i<nodelist.getLength(); i++)
	{
		// channel node중 item node만  처리
		Node item = nodelist.item(i);
		if("item".equals(item.getNodeName()))
		{
			NodeList itemList = item.getChildNodes();
			Node title = itemList.item(0);
			Node link = itemList.item(1);
			Node thumbnail = itemList.item(2);
			Node sizeheight = itemList.item(3);
			Node sizewidth = itemList.item(4);
		}
	}

}


우선 위 소스의 결과를 간략히 설명하면 32~36라인에 있는 5개의 Node 변수에 이미지검색 API의 결과인 5개의 정보가 들어간다.

주석 기준으로 간단히 소스를 설명하며 아래와 같다.

1. 우선 OpenAPI 사용을 위한 주소를 단순히 문자열 변수에 넣는다.(예제 소스에서는 key값을 그냥 test로 했지만 실제로는 발급받은 key값을 사용해야한다.)

2. 설정된 URL을 통해서 질의를 하고 결과를 스트림으로 받는다.

3. 스트림으로 받은 결과를 DOM객체로 표현한다.

4. 마지막으로 하나씩 파싱해가면서 원하는 정보를 얻는다.
소스를 보면 최상위 노드인 rss부터 시작해서 하위노드로 이동하면서 원하는 정보를 얻는데 "root.getElementsByTagName" 등의 메소드를 통해서 원하는 정보를 바로 접근할 수도 있다.


이번학기 프로젝트 중 OpenAPI를 사용하는 부분이 있어서 급하게 공부한 것을 정리한 것으로 내용중 잘못된 정보가 있을 수 있습니다.
또한 대부분의 소스는 http://mashupkorea.com/ 에서 2007년 경진대회 참가 작품 중 신현우님이 "사전(자바기반 애플리케이션)"을 참고하였습니다.


- 참고 사이트 -
네이버 OpenAPI : http://openapi.naver.com/
네이버 OpenAPI 공식 카페 : http://cafe.naver.com/openapi.cafe
소스 참조 : http://mashupkorea.com/ 사전(자바기반 애플리케이션) / 개발자: 신현우

Posted by Gungume
,