没有 SSL 时 IOHandlers 之间的区别
Difference between IOHandlers when there is no SSL
我正在使用 Indy 从 url 地址获取 JSON。我的代码使用 TIdSSLIOHandlerSocketOpenSSL
作为 IOHandler
用于 TIdHTTP
。
var IdHTTP: TIdHTTP;
IdSSL: TIdSSLIOHandlerSocketOpenSSL; // IO handler #1
IdnoSSL: TIdIOHandlerStack; // IO handler #2
JSON: String;
我很好奇,当 url 很简单 http://www.example.com
而不是 https://www.example.com
时,是否有理由使用 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 吗?
欢迎提供任何帮助或建议。
如果您分配 IdSSL
,TIdHTTP
将根据请求的是 HTTP 还是 HTTPS url 自动 enable/disable 它。因此,您可以始终分配 IdSSL
,让 TIdHTTP
决定如何使用它。
另一方面,如果您根本不需要 HTTPS,则根本不需要分配任何 IOHandler
(您几乎不需要 IdnoSSL
)。连接到服务器时,如果尚未分配 IOHandler
,Indy 将为您创建默认 TIdIOHandlerStack
。
如果您使用的是最新版本的 Indy,并且不需要自定义 SSL/TLS 设置,那么 you don't need to manually assign an IOHandler
for HTTPS.
但是,如果您尝试在没有分配 SSL IOHandler
(手动或其他方式)的情况下请求 HTTPS url,您将收到 EIdIOHandlerPropInvalid
异常。
我正在使用 Indy 从 url 地址获取 JSON。我的代码使用 TIdSSLIOHandlerSocketOpenSSL
作为 IOHandler
用于 TIdHTTP
。
var IdHTTP: TIdHTTP;
IdSSL: TIdSSLIOHandlerSocketOpenSSL; // IO handler #1
IdnoSSL: TIdIOHandlerStack; // IO handler #2
JSON: String;
我很好奇,当 url 很简单 http://www.example.com
而不是 https://www.example.com
时,是否有理由使用 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 吗?
欢迎提供任何帮助或建议。
如果您分配 IdSSL
,TIdHTTP
将根据请求的是 HTTP 还是 HTTPS url 自动 enable/disable 它。因此,您可以始终分配 IdSSL
,让 TIdHTTP
决定如何使用它。
另一方面,如果您根本不需要 HTTPS,则根本不需要分配任何 IOHandler
(您几乎不需要 IdnoSSL
)。连接到服务器时,如果尚未分配 IOHandler
,Indy 将为您创建默认 TIdIOHandlerStack
。
如果您使用的是最新版本的 Indy,并且不需要自定义 SSL/TLS 设置,那么 you don't need to manually assign an IOHandler
for HTTPS.
但是,如果您尝试在没有分配 SSL IOHandler
(手动或其他方式)的情况下请求 HTTPS url,您将收到 EIdIOHandlerPropInvalid
异常。