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

Delphi 11 REST Client 에 문제가 있는거 같습니다.


nabis

질문

우선, RAD11 로 업그레이드 하고 난후

REST API 호출시에 POST로 하는 경우 정상적으로 동작하지 않습니다.

이게 라이브러리 문제인거 같은데, 버그 같습니다.

10.4 REST Debuger 에서는 문제없이 다 잘 되는것이

11 REST Debuger 에서 POST 방식의 API 사용시 제대로 동작하지 않습니다.

전반적으로 REST 모듈에서 POST 방식인 경우 문제가 있는거 같습니다.

같은 모듈 또는 같은 API를 호출시 10.4에서는 정상적으로 동작하지만, 11에서는 모두다 오류 Internal 500 오류를 내 뱉습니다. POST 방식인 경우에만

REST Bebuger 도 POST 인 경우 오류가 발생됩니다.

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

6 answers to this question

Recommended Posts

  • 0

델파이 11 에서 RESTRequest 에서 POST 전송시 GET으로 전달하는 문제가 있었군요.

여튼 처음에 제가 질문드린걸로 버그입니다.

해결방법을 찾아서 여기 공유해 드릴려고 합니다.

파라미터로 값을 전달시에

컨텐츠타입과 종류를 개별적으로 지정하시면 해당파라미터 값이 POST 형식으로 전달됩니다.

Param.ContentType := TRESTContentType.ctAPPLICATION_X_WWW_FORM_URLENCODED;
Param.Kind  := TRESTRequestParameterKind.pkGETorPOST;

 

아마 그전 버전에서는 저게 자동으로 메소드가 rmPost 인경우 자동으로 저렇게 전송된거 같습니다.

어쩐 일인지 이번 델파이11에서는 저 부분을 수동으로 지정해 주셔야 됩니다.

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

  • 0

일단 어떤식으로 REST API를 호출 하셨는지 관련 소스를 올려 주시기 바랍니다.

제가 마침 REST API를 이용해서 작업하는 프로젝트가 있는데 실서버와 연동해서 Rad 11 로 빌드해서 테스트 해보니

POST와 GET 방식 모두 정상적으로 작동 하는것을 확인 하였습니다.

제가사용하는 방식은   TNetHTTPRequest 와  TNetHTTPClient 를 사용해서 호출하는 방식입니다.

관련 내용은 아래 링크영상을 보시기 바라며 샘플소스는 영상에 링크를 달아 두었습니다.

 

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

  • 0

샘플소스는

우선 API 서비스는 네이버 클라우드의 번역 API 서비스입니다.

이전 10.4에서도 아래의 소스, 그리고 API 서비스 자첵제공하는 API 서비스 와

네이버 클라우드 서비스의 API, 기타 해외 및 공공데이터에서 제공하는 API를 사용합니다.

대부분 코드는 아래와 같은 형식으로 진행되며, 10.4 이하에서는 아래의 코드가 아무런 문제없이 진행됩니다만,

11이후 다 internal 500 에러를 내 뱉습니다.

그리고 11에서 제공하는 REST Debuger 프로그램도 POST 방식일 경우 제대로 되지 않습니다.

var

FClient : String;

FSecret : String;

Param : TRESTRequestParameter;

FClient   : TRESTClient;
    FRequest  : TRESTRequest;
    FResponse : TRESTResponse;

begin

FClient := TRESTClient.Create(Self);
  FClient.BaseURL   := 'https://naveropenapi.apigw.ntruss.com/';
  FResponse         := TRESTResponse.Create(Self);
  FRequest          := TRESTRequest.Create(Self);
  FRequest.Client   := FClient;
  FRequest.Response := FResponse;
  FRequest.Resource := 'nmt/v1/translation';
  FRequest.Method   := TRESTRequestMethod.rmPOST;
  FClientID         := '클라이언트ID';
  FSecret           := '시큐어키';

 

FRequest.Params.Clear;

  Param := Request.Params.AddItem;
  Param.Kind  := TRESTRequestParameterKind.pkHTTPHEADER;
  Param.Name  := 'X-NCP-APIGW-API-KEY-ID';
  Param.Value := FClientID;

  Param := Request.Params.AddItem;
  Param.Kind  := TRESTRequestParameterKind.pkHTTPHEADER;
  Param.Name  := 'X-NCP-APIGW-API-KEY';
  Param.Value := FSecret;

  Param := Request.Params.AddItem;
  Param.name := 'source';
  Param.Value := Self.GetLangCode(FSNation);

  Param := Request.Params.AddItem;
  Param.name := 'target';
  Param.Value := Self.GetLangCode(FDNation);

  Param := Request.Params.AddItem;
  Param.name := 'text';
  Param.Value:= Self.FText.Trim;

  Request.Execute;

end;

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

  • 0

네이버 REST API 서비스는 클라이언트 어플리케이션의 인증과정도 필요한것으로 알고 있는데 RAD11 로 새로 빌드 하면서 기존 RAD10.4 에서 빌드하신 어플리케이션에서 인증받은 인증키를 그대로 사용해서 발생하는 문제는 아닌지도 체크 해보시기 바랍니다.

엠바카데로 https://quality.embarcadero.com/secure/Dashboard.jspa 에도 아직 REST API 관련 접속문제로 버그리포팅 된 항목은 없는것 같습니다.

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

  • 0

먼저, 저의 경우 RAD 스튜디오 11 알렉산드리아에서 POST로 요청 구현에 문제는 없었습니다.

1) 다음 세미나에서 REST 클라이언트의 POST 기능을 구현 및 테스트하였습니다.

2) 다음 REST 테스트 사이트에서도 10.4와 11.0의 REST Debugger로 테스트 시 문제 없었습니다.

https://jsonplaceholder.typicode.com/guide/
image.png

 

개인적인 의견을 드리면, 

500 에러의 경우 내부 서버오류로, 요청받은 데이터를 처리하지 못해 발생했을수도 있을 것 같습니다.

작성하신 소스코드를 보니 "Content-type"을 지정하는 코드가 없습니다. 다음 코드들을 추가해 테스트 진행해 보시기 바랍니다.

1) RESTClient.ContentType := 'application/json';

2) Param.ConentTypeStr := 'application/json';

 

참고. 작성하고 보니, 10.4의 Param.ContentType 속성이 11.0에서는 Param.ContentTypeStr로 변경되었습니다.
(크게 연관이 있어 보이지는 않지만, 내부적으로 어떻게 구현되었는지는 알수 없네요.)

우선 의심가는 내용을 안내드립니다. 테스트 해보시고 결과 알려주시면 감사하겠습니다.
(위 내용으로 해결되지 않으면 저도 파파고 문자 번역 연동을 시도해 보도록 하겠습니다. https://api.ncloud-docs.com/docs/ai-naver-papagonmt )

 

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

이 토의에 참여하세요

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

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

중요한 정보

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