들어가는 말
요즈음은 포털 사이트에서 Open API를 제공하여 검색의 결과나 다른 정보를 가져와서 필요에 맞게 구성할 수 있게 되었습니다. Open API를 사용하여 그 결과를 가져오는 방법이 언어에 따라 차이가 있는데 C#을 이용한 네이버 오픈 API 연동 에 관하여 알아보도록 하겠습니다.
연동설정 및 대상
먼저 네이버에 애플리케이션을 등록하여야 하는데 이 과정은 아래의 링크를 참고 하시면 됩니다.
https://developers.naver.com/apps/#/register?defaultScope=search
연동에 필요한 기본적인 설정은 되어 있다고 가정하겠습니다. 서비스 API > 검색에서 여러 영역이 있는데 카페글을 대상으로 진행해 보겠습니다. 웹문서, 블로그 등도 비슷한 방식으로 연동하시면 됩니다.
연동방법
C#에서는 WebRequest 클래스를 이용하여 Open API와 연동합니다. 레퍼런스는 아래의 링크에서 확인하실 수 있습니다.
https://msdn.microsoft.com/ko-kr/library/system.net.webrequest(v=vs.110).aspx
연동 자체는 어렵지 않습니다. 다음과 같은 방식으로 결과를 가져옵니다. GetRequestResult 메소드는 네이버 오픈 API URL, 클라이언트 ID와 secret을 전달받아 그 결과를 string으로 반환합니다.
private string GetRequestResult(string openApiUrl, string clientId, string clientSecret) { var requestResult = String.Empty; try { WebRequest request = null; request = WebRequest.Create(openApiUrl); request.Headers.Add("X-Naver-Client-Id", clientId); request.Headers.Add("X-Naver-Client-Secret", clientSecret); Stream dataStream = null; var response = request.GetResponse(); dataStream = response.GetResponseStream(); var reader = new StreamReader(dataStream); requestResult = reader.ReadToEnd(); reader.Close(); dataStream.Close(); response.Close(); } catch (Exception ex) { logger.Fatal("Exception occurred!"); } return requestResult; }
13, 14행에 클라이언트 ID와 secret를 지정해 주고 openApiUrl은
https://openapi.naver.com/v1/search/cafearticle.json?query=키워드&display=40
와 같은 형태로 지정합니다. 요청 변수 및 출력결과에 대한 설명은 아래의 링크에서 확인하실 수 있습니다.
https://developers.naver.com/docs/search/cafearticle/
결과 반환형식은 XML 또는 JSON으로 지정할 수 있습니다. 사용하기 편한 형태로 지정하여 사용하면 됩니다. 필자는 JSON 형태로 지정하여 결과값을 받았습니다. 그 값을 JSON Parser(Newtonsoft.Json)를 이용하여 parsing 후 값을 가져왔습니다. 예를 들면 다음과 같습니다.
responseJSON = GetRequestResult(openApiUrl, clientId, clientSecret); var parseJSON = JObject.Parse(responseJSON); var queryResultCount = Convert.ToInt32(parseJSON["display"]); //검색된 검색 결과의 개수 var totalResultCount = Convert.ToInt32(parseJSON["total"]); //검색 결과 문서의 총 개수 //개별 검색 결과 var cafeTitle = parseJSON["items"][0]["title"].ToString(); var cafeContent = parseJSON["items"][0]["description"].ToString(); var cafeName = parseJSON["items"][0]["cafename"].ToString(); var cafeUrl = parseJSON["items"][0]["cafeurl"].ToString();
5행은 parsing하여 변수에 대입하는 코드이고 나머지는 몇 가지 요소의 값을 가져오는 코드입니다. 위의 링크의 출력 결과 정보와 함께 보시면 됩니다. 링크의 설명에는 개별 검색 결과의 필드가 item 이라고 되어 있는데 실제 결과를 받아보니 items 로 되어 있었습니다. 원하는 값을 가져올 수 없는 경우 반환값의 필드명이 다른 것이 아닌지 확인할 필요가 있습니다.
이상으로 C#을 이용한 네이버 오픈 API 연동 방법에 대하여 알아보았습니다.