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 연동 방법에 대하여 알아보았습니다.

 

이케아 레르함(LERHAMN) 의자

구매동기

이전에 소개한 이케아 레르함(LERHAMN) 테이블과 세트가 되는 이케아 레르함(LERHAMN) 의자 입니다. 테이블만 있으면 의미가 없으므로 세트격인 이케아 레르함(LERHAMN) 의자 를 2개 같이 구입하였습니다.

조립

상자 모양이 의자 옆모습처럼 생겼습니다. 무겁지는 않습니다. 조금 가벼운쪽에 가깝다고 생각하시면 됩니다.

이케아 레르함(LERHAMN) 의자 상자 모양

이케아 레르함(LERHAMN) 의자 상자 모양

상자를 개봉해 보면 다른 제품과 마찬가지로 깔끔하게 포장되어 있습니다. 처음에 의자 시트가 어떻게 되어 있을까 궁금했습니다. 열어보니 시트 부분은 별도로 조립할 것은 없고 그냥 나사로 조여 주기만 하면 되었습니다.

이케아 레르함(LERHAMN) 의자 상자 개봉

이케아 레르함(LERHAMN) 의자 상자 개봉

시트 포장 상태

시트 포장 상태

시트를 걷어내면 의자 틀과 부속품이 포장되어 있습니다.

의자 틀과 부속품

의자 틀과 부속품

나사와 철물 그리고 기타 부품은 조립에 딱 맞게 들어 있습니다.

 

나사와 부속품

나사와 부속품

내용물이 빠지지 않았는지 확인한 후 조립을 시작하였습니다. 설명서를 보고 차근차근 진행하면 쉽게 조립할 수 있습니다.

먼저 앞뒤로 시트를 지지해 줄 부분을 조립합니다.

지지대 조립

지지대 조립

나무로 된 부속품을 구멍에 넣고 의자 틀에 연결합니다.

나무 부속품을 넣은 모양

나무 부속품을 넣은 모양

의자틀에 연결한 모양

의자틀에 연결한 모양

다음으로 등받이 쪽에 세개의 지지대를 연결합니다. 필자의 경우 조금 뻑뻑하여 틈이 생기지 않도록 살짝 쳐주었습니다. 가공상태에 따라 조금 달랐던 것 같습니다. 대부분 맞을 것이라 생각됩니다. 등받이 부분을 연결하고 다른 의자틀을 연결하면 의자의 모습이 됩니다.

등받이 지지대

등받이 지지대

나머지 의자틀을 연결한 모양

나머지 의자틀을 연결한 모양

이제 가공된 구멍에 나사를 조여 조립된 모양을 고정합니다. 위에서 보았던 검은색 나사가 길어서 조이기가 조금 힘이 들었습니다. 같이 동봉된 도구로 조이면 됩니다. 나무 부분을 조이게 되어 다른 제품의 금속가공 부분보다는 더 힘이 들어갑니다. 여러개를 조립하되니 나중에는 힘을 많이 주어 손이 얼얼할 정도였습니다.

동봉된 도구로 나사를 조이는 모습

동봉된 도구로 나사를 조이는 모습

나사로 가공된 구멍을 모두 조이면 틀이 모두 완성됩니다. 여기에 시트를 얻고 나사로 조여주면 의자가 완성됩니다.

나사를 조여 틀이 완성된 모양

나사를 조여 틀이 완성된 모양

시트 아래 부분. 나사 구멍이 가공되어 있다

시트 아래 부분. 나사 구멍이 가공되어 있다

시트를 얻고 나사를 조여 완성한 모양

시트를 얻고 나사를 조여 완성한 모양

의자의 무늬가 인위적이지 않아 자연스러운 느낌이 납니다. 그러나 의자가 아주 튼튼하지는 않다는 생각이 들었습니다. 조금 힘이 없을 것 같은 그런 느낌이라고 생각하시면 될 것 같습니다. 체중이 많이 나가는 분이 사용하시거나 더 튼튼한 의자를 원하시는 분은 다른 제품을 선택하는 것이 더 좋을 것 같습니다. 제품 정보와 가격은 아래의 주소에서 확인하실 수 있습니다.

http://www.ikea.com/kr/ko/catalog/products/00259424/?rccode=pc_main_forme_kr