새로운 글
새로운 덧글

자유롭게 질의 및 응답을 할 수 있는 게시판이며 어느 누구도 답변을 달아야만 하는 의무는 없습니다. 
  • 제품설치/등록/제품 오류 문의: 설치/등록 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. 클라이언트에서 인증서를 넣어 서버로 전송하는 로직

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

 

 

감사합니다!

 

번호 제목 글쓴이 날짜 조회 수
공지 [연말 이벤트] 개발자 Q&A 게시판을 가장 잘 활용해주신 분 상품 증정 관리자 2018.11.12 18
공지 [프로그래밍 강의] 2018.10~2018.12 관리자 2015.01.22 6124
공지 유용한 관련 사이트 관리자2 2014.03.20 43375
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 84947
69 안드로이드 모바일 해상도 100jk 2018.08.30 71
68 CTI 연동할때 모니터 하단에서 알림창 같이 떠오르게 하는 방법? 미스터리 2018.08.31 38
67 FMX Path에서 anti aliasing 없애는 방법이 있나요? [2] 100jk 2018.09.01 36
66 FMX Component 생성시 오류 [2] file 100jk 2018.09.04 63
65 안녕하세요 datasnap 연결에 대해 질문드립니다. [1] vast 2018.09.05 51
64 이미지 컴포넌트 추천 해 주세요... [1] 굿맨 2018.09.05 48
63 IBConsole에서 [3] file 개발자로 2018.09.07 36
62 delphi 10.2 sdk 설정 관련 문의 [1] file 신우 2018.09.07 45
61 윈도우10과 이전 윈도우에서 VCL 버튼이나 메지지 상자 코너 표시형태 문의입니다. [2] KJ 2018.09.08 30
60 블루투스 터미널 앱을 만들고싶습니다. 데이터 수신은 어떻게하나요? [1] Rarity 2018.09.09 54
59 카메라 컴포넌트 관련 문의드립니다. [6] 최봉원 2018.09.10 116
58 delphi10.2 SDK 관련 설정 문의 2 신우 2018.09.10 53
57 윈도우 프로그램 배포(인증문제) [1] 스카이 2018.09.10 134
» Client 에서 REST Request 시, server certificate 체크 질문드립니다. [2] Joon 2018.09.11 80
55 Timage 에 특정 이미지 사용시 앱이 꺼짐니다. file 천지조율 2018.09.12 47
54 VCL 컴포넌트를 FMX용으로 바꾸고 싶습니다. [6] 쿠리 2018.09.12 125
53 iOS 11.4 아직 불가능한가요? [2] 엽기토끼이요 2018.09.17 144
52 윈도우10 에서 XE7 Fastreport5 오류 문의 [1] juljoo 2018.09.18 58
51 퀀텀그리드 이벤트 관련 문의드립니다. [1] BW 2018.09.19 76
50 delphi 10.2.3 +Xcode 10 + IOS 12 환경에서 빌드시 왜 에라메세지가 뜨는지요? [1] file 화이부동 2018.09.26 102



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