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

REST Client 활용 Naver Papago (번역서비스) OPEN API 사용법 소개


Recommended Posts

네이버에서 제공하는 다양한 OPEN API 중 활용도가 놓은 Papago 번역 서비스의 활용법을 소개 합니다.

사용환경은 Rad Studio 11 이며 Post 호출 방식입니다.

REST API를 이용한 사용법을 알면 다른 여러가지 OPEN API도 같은 방식으로 사용이 가능 합니다.

1.  https://developers.naver.com/main/  네이버 개발자 사이트에서 파파고 서비스를 선택하여 어플리케이션을 등록하고 Client ID 와 Client Secret 키를 발급 받습니다. 테스트를 위해서는 어플리케이션 이름과 Android Package (또는 iOS) 명을 임의로 지정해도 됩니다. 향후 정식 서비스에서는 실제 사용하는 패키지명을 등록 하면 됩니다.

https://developers.naver.com/products/papago/nmt/nmt.md 

 

image.png

image.png

 

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

image.png

 

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

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

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

sParam.Add( 'text=' + Edit1.Text ); 의 Edit1.Text 에 번역하고자 하는 내용을 입력합니다.

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

procedure TForm1.Button1Click(Sender: TObject);
var
  sParam : TStringList;
  sURL : string;
begin
  sURL := 'https://openapi.naver.com/v1/papago/n2mt';

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

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


  sParam := TStringList.Create;
  sParam.Add( 'source=ko' );
  sParam.Add( 'target=en' );
  sParam.Add( 'text=' + Edit1.Text );


  NetHTTPRequest1.Post(  sURL, sParam ) ;
end;


procedure TForm1.NetHTTPRequest1RequestCompleted(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;


//--------------------------------------------------------------------------------
function TForm1.Response_To_GetPapagoData( rData : string ) : string;
var
  jSONValue : TJSONValue;
begin
// https://developers.naver.com/docs/papago/papago-nmt-api-reference.md
// 결과 Json 데이터 샘플
// {
//    "message": {
//        "@type": "response",
//        "@service": "naverservice.nmt.proxy",
//        "@version": "1.0.0",
//        "result": {
//            "srcLangType":"ko",
//            "tarLangType":"en",
//            "translatedText": "tea"      <<<<< 번역된 결과 값 항목.
//        }
//    }
// }

   JsonValue := TJSonObject.ParseJSONValue( rData );
   result := JsonValue.GetValue<string>('message.result.translatedText');

   JsonValue.Free;
end;

 

* 결과 화면 

image.png

 

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

이 토의에 참여하세요

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

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...

중요한 정보

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