这样做,我应该获得公共知识产权:
function TForm1.GetPublicIp: String;
begin
IdHttp1.Request.Host := 'https://www.mio-ip.it';
Result := IdHttp1.Get('https://www.mio-ip.it');
end;问题是,即使我没有错误地填写它,当我按下按钮时,它也会引发一个错误:
IOHandler值无效
发布于 2022-02-07 02:50:42
您正在请求一个HTTPS url。为了在TIdHTTP中使用HTTPS (HTTPS/TLS),您需要为TIdHTTP.IOHandler属性(如TIdSSLIOHandlerSocketOpenSSL )分配一个TIdSSLIOHandlerSocketBase-derived组件。还可以在Indy的博客上看到用于TIdHTTP的新HTTPS功能。
使用TIdSSLIOHandlerSocketOpenSSL,您必须使用应用程序ssleay32.dll和libeay32.dll部署2个OpenSSL二进制文件。你可以从印地的OpenSSL-二进制文件 GitHub回购处得到它们。只需注意,TIdSSLIOHandlerSocketOpenSSL最多支持OpenSSL 1.0.2u。如果您需要OpenSSL 1.1.x (对于TLS1.3,等等),则可以使用SSLIOHandler。
或者,您可以使用任何其他的SSL/TLS库,只要您能够为它找到(或编写)一个SSLIOHandler。例如,SecureBlackbox为它自己的SSL/TLS引擎提供了一个SSLIOHandler。这个GitHub回购为LibTLS提供了一个SSLIOHandler。
发布于 2022-02-22 20:06:23
此外,您还可以使用TNetHTTPClient进行Delphi XE8和up。
https://stackoverflow.com/questions/71004922
复制相似问题