Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr

REST Client 활용 Naver OPEN API 사용법 및 RadStudio 12 에서 JsonWizard 사용


Recommended Posts

네이버의 Open API 서비스를 이용할 수 있는  REST API 사용법을 소개 합니다.

REST API 사용은 다른 서버의 경우에도 동일하며 서버에서 요구한 파라미터 값만 잘 맞춰 주면 활용이 가능 합니다.

관련 사이트는 아래와 같습니다.

https://developers.naver.com/main/

해당 사이트에서 개발 할 앱을 등록하고 앱키와 API 인증키를 발급 받으면 됩니다. (무료)

데모 샘플 에서는 네이버의 단축 URL 서비스를 이용합니다.

https://developers.naver.com/docs/utils/shortenurl/#개요

웹사이트의  TEXT 길이가 긴  URL을 전송하면 단축 URL을 결과값으로 받아 올 수 있습니다.

 

Rad Studio 에서 새로운  FMX 프로젝트를 생성하고 아래 그림과 같이 화면을 생성하고  TNetHTTPRequest  와 TNetHTTPClient 컴포넌트를 생성 합니다. 이때 TNetHTTPRequest 에 연결된 Client 항목을 TNetHTTPClient 로 지정 합니다.

image.png

 

아래 소스를 참고 하여 빌드 하면  서비스를 호출하여 사용 가능 합니다. 

버튼을 클릭하면 네이버 서비스를 호출하게되고 NetHTTPRequest1의  OnRequestCompleted 메소드에서 결과값을 받아 옵니다.

NetHTTPClient1.CustomHeaders 에 본인이 발급받은 Cient ID 와 키값을 입력하고

 sParam.Add( 'url=' + Edit1.Text );  의 Edit1.Text 에 URL을  입력합니다.

기타 옵션은 네이버 개발자 가이드를 참고 하시면 됩니다.

 

unit ApiNaverURL;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, System.JSON,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, System.Net.URLClient, System.Net.HttpClient,
  System.Net.HttpClientComponent, FMX.ScrollBox, FMX.Memo, FMX.Controls.Presentation, FMX.StdCtrls, FMX.Edit, FMX.Memo.Types, FMX.Objects;

type
  TForm1 = class(TForm)
    NetHTTPClient1: TNetHTTPClient;
    NetHTTPRequest1: TNetHTTPRequest;
    Memo1: TMemo;
    Memo2: TMemo;
    Edit1: TEdit;
    BT_Send: TButton;
    Rectangle1: TRectangle;
    Text1: TText;
    procedure NetHTTPClient1RequestCompleted(const Sender: TObject; const AResponse: IHTTPResponse);
    procedure BT_SendClick(Sender: TObject);
  private
    function Response_To_GetPapagoData(rData: string): string;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

Uses
  JasonWzNaver;


{$R *.fmx}

//  https://developers.naver.com/main/
//  https://developers.naver.com/docs/utils/shortenurl/#%EA%B0%9C%EC%9A%94


procedure TForm1.BT_SendClick(Sender: TObject);
var
  sURL : string;
  sParam : TStringList;
begin
  sURL := 'https://openapi.naver.com/v1/util/shorturl.json';

  NetHTTPClient1.Accept        := 'application/json';
  NetHTTPClient1.ContentType   := 'application/x-www-form-urlencoded; charset=UTF-8;';
  NetHTTPClient1.AcceptCharSet := 'UTF-8';

  NetHTTPClient1.CustomHeaders['X-Naver-Client-Id']     := 'abcd1234'; // 애플리케이션 등록 시 발급받은 클라이언트 아이디 값
  NetHTTPClient1.CustomHeaders['X-Naver-Client-Secret'] := 'sss1234'; // 애플리케이션 등록 시 발급받은 클라이언트 시크릿 값


  sParam := TStringList.Create;
  sParam.Add( 'url=' + Edit1.Text );

  NetHTTPRequest1.Post( sURL, sParam ) ;
end;


//--------------------------------------------------------------------------------
function TForm1.Response_To_GetPapagoData( rData : string ) : string;
begin
  TJsonMapper<MyNaver>.SetDefaultLibrary( 'System.JSON.Serializers' );
  var getJObj := MyNaver.FromJSON( rData  );

  result := getJobj.result.url;
end;


procedure TForm1.NetHTTPClient1RequestCompleted(const Sender: TObject; const AResponse: IHTTPResponse);
begin
  Memo2.Lines.Clear;
  Memo2.Lines.Add( AResponse.ContentAsString() ); // 응답받은 전체 Json 데이터

  Memo1.Lines.Clear;
  Memo1.Lines.Add( Response_To_GetPapagoData( AResponse.ContentAsString() ) ); // 번역된 내용 
end;

end.

 

 Memo2.Lines.Add( AResponse.ContentAsString() );  부분을 이용하여 결과값으로 받아오는 Json 값을 파싱하기 전에 전체 데이터의  Json 값을 확인 합니다.

{"result":
  {"url":"https://me2.do/FvEUWWlR",
   "hash":"FvEUWWlR","orgUrl":"https://welcome.devgear.co.kr/"},
   "message":"ok","code":"200"}

이 값을 Rad Studio 12 버전 부터 제공되는 Json 위저드 기능을 사용하여 파싱 소스를 제너레이션 할 수 있습니다.

Json 위저드 사용방법은 아래 동영상을 참고 하기 바랍니다.

 

Json 위저드의 파싱이 정상적으로 처리 되면 단축 URL로 변환된 결과값은 result := getJobj.result.url; 항목에서 받아 올 수 있습니다.

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 토픽(기고/질문)에 답하기

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.