URL 주소에서 JSON을 가져 오기 위해 Indy를 사용하고 있습니다. 내 코드는 TIdSSLIOHandlerSocketOpenSSL
을 IOHandler
(TIdHTTP
)으로 사용하고 있습니다. URL이 https://www.example.com
, http://www.example.com
간단하지 않다SSL이 없을 때 IOHandlers의 차이
var IdHTTP: TIdHTTP;
IdSSL: TIdSSLIOHandlerSocketOpenSSL; // IO handler #1
IdnoSSL: TIdIOHandlerStack; // IO handler #2
JSON: String;
핸들러로 SSL을 사용하는 몇 가지 이유가있을 경우 내가 궁금 하군요?
begin
IdHTTP := TIdHTTP.Create;
try
IdSSL := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP);
IdHTTP.IOHandler := IdSSL;
// IdnoSSL:= TIdIOHandlerStack.Create(IdHTTP);
// IdHTTP.IOHandler := IdnoSSL;
JSON := IdHTTP.Get('http://www.example.com');
finally
IdHTTP.Free;
end;
end;
아니면 내가 TIdSSLIOHandlerSocketOpenSSL
를 제거하고 TIdIOHandlerStack
과에 NoSSL을 사용해야합니까?
도움이나 조언이 있습니다.
감사합니다. 나는 HTTP에 접근하기 위해'IOHandler'를 할당하려하지 않고'EIdIOHandlerPropInvalid' 예외를 얻습니다. 그래서 나는 거기에'IdSSL'을 남겼습니다. – Legionar
흠 .. 나는 델파이가 설치되어 있지 않은 다른 컴퓨터에서 시험해 보았고 예외적으로 'EIdOSSLCouldNotLoadSSLLibrary'를 얻었다. 그래서 내 애플 리케이션에 몇 가지 SSL 라이브러리를 포함시켜야합니까? 도와 주셔서 감사합니다. – Legionar
@Legionar ** 유일한 ** 방식 인'EIdIOHandlerPropInvalid'가 발생하는 것은'SSLIOHandler'가 지정되지 않고 HTTPS URL이 요청 된 경우입니다. HTTP URL이 HTTPS URL로 리디렉션을 되돌려 보내야합니다. 그리고 예, TIdSSLIOHandlerSocketOpenSSL을 사용한다면, 앱과 함께 [OpenSSL library] (http://indy.fulgan.com/SSL/)를 배포해야합니다. –