반응형

안녕하세요, 츄르 사려고 코딩하는 집사, 코집사입니다.

이번 글은 C# WPF를 이용하여 네이버 단축 URL API 사용 방법 및 코드 입니다.

C#을 이용하여 어떻게 네이버 API를 적용시키는지 알아보겠습니다.

 

 

1. 먼저 네이버 오픈 API 사이트를 접속합니다.

    - https://developers.naver.com/products/search/

 

검색 API 소개

검색 웹, 뉴스, 블로그 등 분야별 네이버 검색 결과를 웹 서비스 또는 모바일 앱에서 바로 보여 줄 수 있습니다. 또한 ’OO역맛집’과 같은 지역 검색을 할 수도 있으며, 부가적으로 성인검색어 판별과 한영키 오타 변환 기능을 이용하실 수 있습니다. 네이버 검색 ...

developers.naver.com

 

2. 화면 하단에 오픈 API 이용 신청을 누릅니다.

 

3. 각 항목을 작성합니다.

    - 애플리케이션 이름 : 저는 제 영문 이름을 넣었습니다.

    - 사용 API는 단축 URL 선택

    - 서비스 환경은 WEB 설정 및 URL은 http://127.0.0.1 넣고 등록하기 버튼 클릭

 

 

4. 위 과정을 다 하면 Client ID 와 Client Secret이 제공 됩니다.

 

5. 그 후, 네이버 API 사이트에서 C# 코드를 제공해주는데 확인합니다.

   - https://developers.naver.com/docs/utils/shortenurl/#c

   - 코드는 아래와 같습니다.

 

단축 URL API 적용 가이드

단축 URL API는 원본 URL을 `http://me2.do/example`과 같은 형태의 짧은 URL로 반환하는 RESTful API입니다.

developers.naver.com

 

using System;

using System.Net;

using System.Text;

using System.IO;

 

namespace NaverAPI_Guide

{

    public class APIExamURL

    {

        static void Main(string[] args)

        {

            string url = "https://openapi.naver.com/v1/util/shorturl";

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

            request.Headers.Add("X-Naver-Client-Id", "YOUR_CLIENT_ID"); // 개발자센터에서 발급받은 Client ID

            request.Headers.Add("X-Naver-Client-Secret", "YOUR_CLIENT_SECRET"); // 개발자센터에서 발급받은

                                                                                                            Client Secret

            request.Method = "POST";

            string query = "https://developers.naver.com/notice"; // 단축할 URL 대상

            byte[] byteDataParams = Encoding.UTF8.GetBytes("url=" + query);

            request.ContentType = "application/x-www-form-urlencoded";

            request.ContentLength = byteDataParams.Length;

            Stream st = request.GetRequestStream();

            st.Write(byteDataParams, 0, byteDataParams.Length);

            st.Close();

            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            Stream stream = response.GetResponseStream();

            StreamReader reader = new StreamReader(stream, Encoding.UTF8);

            string text = reader.ReadToEnd(); // 결과

            stream.Close();

            response.Close();

            reader.Close();

            Console.WriteLine(text);

        }

    }

}

 

6. Visual Studio 2017를 사용해서 콘솔 앱을 만들어 줍니다.

 

7. 위의 코드를 Main에 넣고, Client ID와 Secret을 넣어 돌리면 아래와 같이 text가 출력됩니다.

   - 저는 아래의 결과에서 url을 받고 싶기 때문에 파싱을 해주려고 합니다.

 

8. 아래의 링크에 들어갑니다.

   - http://jsonutils.com/

 

JSON Utils: Generate C#, VB.Net, SQL Table, Java and PHP from JSON

Lots of tools out there already, why do we need another? I was tired of having multiple tabs open to convert objects, then another to view the data, and another to clean it up. I wanted one tool where I could see everything side by side. Hope you enjoy. Ca

jsonutils.com

 

9. 아래의 사진과 같이 결과를 넣어주고, 아래의 클래스를 받습니다.

 

10. 이제, 콘솔창으로 결과가 나오니 이젠 WPF 앱으로 적용하겠습니다.

     - 저는 아래와 같이, 링크를 입력하고 버튼을 누르면 단축 URL과 QR코드 이미지가 나오는 것을 목표로 합니다.

 

11. XAML을 디자인 해주고, 버튼 클릭에 대한 이벤트 함수를 만들어 줍니다.

 

12. 아래와 같이, 코드를 넣어줍니다.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

using System.Net;

using System.IO;

using Newtonsoft.Json;

 

namespace WpfApp3

{

    /// <summary>

    /// MainWindow.xaml에 대한 상호 작용 논리

    /// </summary>

    public partial class MainWindow : Window

    {

        public class Result

        {

            public string hash { get; set; }

            public string url { get; set; }

            public string orgUrl { get; set; }

        }

 

        public class Example

        {

            public string message { get; set; }

            public Result result { get; set; }

            public string code { get; set; }

        }

 

        public MainWindow()

        {

            InitializeComponent();

        }

 

       private void Btn1_Click(object sender, RoutedEventArgs e)

       {

           string url = "https://openapi.naver.com/v1/util/shorturl";

           HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

 

           request.Headers.Add("X-Naver-Client-Id", "ZvNNIAE_Djt4OxemLySi"); // 개발자센터에서 발급받은 Client ID

           request.Headers.Add("X-Naver-Client-Secret", "sfAOMGQxQI"); // 개발자센터에서 발급받은 Client Secret

           request.Method = "POST";

 

           string query = txt1.Text; // 단축할 URL 대상

           byte[] byteDataParams = Encoding.UTF8.GetBytes("url=" + query);

           request.ContentType = "application/x-www-form-urlencoded";

           request.ContentLength = byteDataParams.Length;

           Stream st = request.GetRequestStream();

           st.Write(byteDataParams, 0, byteDataParams.Length);

           st.Close();

           HttpWebResponse response = (HttpWebResponse)request.GetResponse();

           Stream stream = response.GetResponseStream();

           StreamReader reader = new StreamReader(stream, Encoding.UTF8);

           string text = reader.ReadToEnd();

           txt2.Text = text;

           stream.Close();

           response.Close();

           reader.Close();

           

 

           // 결과값에서 result 부분에 url을 txt2에 출력하겠다.

           Example ex = (JsonConvert.DeserializeObject<Example>(text));

           txt2.Text = ex.result.url;

 

          ImageSource im = new BitmapImage(

          new Uri(ex.result.url + ".qr"));

          img1.Source = im;

          }

    }

}

 

 

 

이렇게 하면, C#에서 API 적용하는 방법이 비슷합니다.

이걸 응용해서 여러 API를 적용할 수 있습니다.

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기