새로운 글
새로운 덧글

자유롭게 질의 및 응답을 할 수 있는 게시판이며 어느 누구도 답변을 달아야만 하는 의무는 없습니다. 
  • 제품설치/등록/제품 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)

본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------

안녕하세요, 델파이 초초초급 개발자입니다.

 

클라이언트에서 REST 서비스로 HTTPS 통신하는 것에 대한 질문입니다.

(며칠 동안 구글링을 했으나 레퍼런스를 찾기가 어려워서요ㅠ)

 

현재 3가지 방식으로 시도하고 있습니다.

 

1. TIdHTTP

function RESTPostCall(inputJsonStr: string; url: string): string;

var

  restClient: TIdHTTP;

  jsonStrList: TStringStream;

  IdSSL: TIdSSLIOHandlerSocketOpenSSL;

  TRST_ID: string;

begin

  try

    TRST_ID := '';

    IdSSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);

    IdSSL.SSLOptions.Mode := sslmClient;

    IdSSL.SSLOptions.VerifyMode := [sslvrfPeer];

    IdSSL.SSLOptions.CertFile := 'C:\private.p12';

//    IdSSL.OnGetPassword := SSLGetPassword;

//    IdSSL.OnVerifyPeer := SSLOnVerifyPeer();

    restClient := TIdHTTP.Create(nil);

    restClient.IOHandler := IdSSL;

    restClient.ReadTimeout := 60000;

    restClient.ConnectTimeout := 60000;

    restClient.Request.Method := 'POST';

    restClient.Request.Accept := 'application/json';

    restClient.Request.ContentType := 'application/json';

    restClient.Request.CustomHeaders.Values['TRST_ID'] := TRST_ID;

    jsonStrList := TStringStream.Create(inputJsonStr);

    Result := restClient.Post(url, jsonStrList);

  finally

    restClient.Free;

  end;

end;

 

2. TRESTClient

// RESTPostCall(between XE5 and XE8)

function RESTPostCallXE5(inputJsonStr: string; url: string): string;

var

  restClient: TRESTClient;

  restRequest: TRESTRequest;

  TRST_ID: string;

begin

  try

    TRST_ID := '';

    restClient := TRESTClient.Create(url);

    restRequest := TRESTRequest.Create(nil);

    restRequest.Method := TRESTRequestMethod.rmPOST;

    restRequest.Accept := 'application/json';

    restRequest.Timeout := 60000;

    restRequest.AddParameter('TRST_ID', TRST_ID);

    restRequest.AddBody(inputJsonStr, ctAPPLICATION_JSON);

    restRequest.Client := restClient;

    restRequest.Execute();

    Result := restRequest.Response.JSONText;

  finally

    restRequest.Free;

    restClient.Free;

  end;

end;

 

3. TNetHTTPClient

// RESTPostCall(XE8 and above)

function RESTPostCallXE8(inputJsonStr: string; url: string): string;

var

  restClient: TNetHTTPClient;

  restRequest: TNetHTTPRequest;

  jsonStrList: TStringStream;

  TRST_ID: string;

begin

  try

    TRST_ID := '';

    jsonStrList := TStringStream.Create(inputJsonStr);

    restClient := TNetHTTPClient.Create(nil);

    restRequest := TNetHTTPRequest.Create(nil);

    restRequest.Client := restClient;

    Result := restRequest.Post(url, jsonStrList).ContentAsString;

  finally

    restClient.Free;

  end;

end;

 

--------------------------------------------------------------------------------------------------------------------------------

 

여기서 질문입니다.

 

1. 클라이언트에서 서버 인증서를 체크하는 로직

-> 이건 아래와 같은 코드가 TidHTTP 에서 있기는 한데, 어디서 이 함수를 호출하는지 모르겠습니다ㅠ

function SSLOnVerifyPeer(Certificate: TIdX509; AOk: Boolean; ADepth, AError: Integer): Boolean;

begin

  Result := True;

end;

 

2. 클라이언트에서 인증서를 넣어 서버로 전송하는 로직

-> 이것도 제가 부족하여 도움을 받고자 합니다ㅠㅠ

 

 

감사합니다!

 

번호 제목 글쓴이 날짜 조회 수
공지 [프로그래밍 강의] 2018.10~2018.12 관리자 2015.01.22 6180
공지 유용한 관련 사이트 관리자2 2014.03.20 43455
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 84963
142 안드로이드 모바일 해상도 100jk 2018.08.30 99
141 CTI 연동할때 모니터 하단에서 알림창 같이 떠오르게 하는 방법? 미스터리 2018.08.31 54
140 FMX Path에서 anti aliasing 없애는 방법이 있나요? [2] 100jk 2018.09.01 43
139 FMX Component 생성시 오류 [2] file 100jk 2018.09.04 69
138 안녕하세요 datasnap 연결에 대해 질문드립니다. [1] vast 2018.09.05 61
137 이미지 컴포넌트 추천 해 주세요... [1] 굿맨 2018.09.05 52
136 IBConsole에서 [3] file 개발자로 2018.09.07 42
135 delphi 10.2 sdk 설정 관련 문의 [1] file 신우 2018.09.07 65
134 윈도우10과 이전 윈도우에서 VCL 버튼이나 메지지 상자 코너 표시형태 문의입니다. [2] KJ 2018.09.08 43
133 블루투스 터미널 앱을 만들고싶습니다. 데이터 수신은 어떻게하나요? [1] Rarity 2018.09.09 75
132 카메라 컴포넌트 관련 문의드립니다. [6] 최봉원 2018.09.10 131
131 delphi10.2 SDK 관련 설정 문의 2 신우 2018.09.10 76
130 윈도우 프로그램 배포(인증문제) [1] 스카이 2018.09.10 248
» Client 에서 REST Request 시, server certificate 체크 질문드립니다. [2] Joon 2018.09.11 107
128 Timage 에 특정 이미지 사용시 앱이 꺼짐니다. file 천지조율 2018.09.12 54
127 VCL 컴포넌트를 FMX용으로 바꾸고 싶습니다. [6] 쿠리 2018.09.12 133
126 iOS 11.4 아직 불가능한가요? [2] 엽기토끼이요 2018.09.17 159
125 윈도우10 에서 XE7 Fastreport5 오류 문의 [1] juljoo 2018.09.18 66
124 퀀텀그리드 이벤트 관련 문의드립니다. [1] BW 2018.09.19 100
123 delphi 10.2.3 +Xcode 10 + IOS 12 환경에서 빌드시 왜 에라메세지가 뜨는지요? [1] file 화이부동 2018.09.26 149



광고 모듈이 설치되어 있지 않아 실행을 중단합니다..