이번 글은 C# WPF를 이용하여 네이버 단축 URL API 사용 방법 및 코드 입니다.
C#을 이용하여 어떻게 네이버 API를 적용시키는지 알아보겠습니다.
1. 먼저 네이버 오픈 API 사이트를 접속합니다.
- https://developers.naver.com/products/search/
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
- 코드는 아래와 같습니다.
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. 아래의 링크에 들어갑니다.
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를 적용할 수 있습니다.
'Language > C# WPF Programming' 카테고리의 다른 글
C# WPF 프로그래밍 Basic Property 다루기 (0) | 2019.05.14 |
---|---|
C# WPF 프로그래밍 속성(Property) 다루기 (0) | 2019.05.13 |
C# WPF 프로그래밍 계산기(Calculator) 프로그램 만들기 - layout 추가(계산 과정, 히스토리 기능 추가) (1) | 2019.05.08 |
C# WPF 프로그래밍 계산기(Calculator) 프로그램 만들기 - 기능 추가(X^2, 1/X, Delete, Sqrt 버튼 추가) (0) | 2019.05.06 |
C# WPF 프로그래밍 상속 및 접근자 (0) | 2019.04.27 |
C# WPF 프로그래밍 2개의 배열의 곱 구하기 (0) | 2019.04.26 |
C# 기초 프로그래밍 Main 함수와 Console 코드 (0) | 2019.04.25 |
C# WPF 프로그래밍 공부한 내용 정리 (0) | 2019.04.24 |
최근댓글