태그 보관물: 네이버 오픈 API

C#을 이용한 네이버 오픈 API 연동

들어가는 말

요즈음은 포털 사이트에서 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 연동 방법에 대하여 알아보았습니다.