Inno setup 根据Inno安装程序中的联机列表检查IP地址

Inno setup 根据Inno安装程序中的联机列表检查IP地址,inno-setup,pascalscript,Inno Setup,Pascalscript,我使用下面的代码获取用户IP地址 函数GetIp:string; 变量 WinHttpReq:变体; 开始 尝试 WinHttpRequest:=CreateOleObject('WinHttp.WinHttpRequest.5.1'); WinHttpReq.Open('GET','http://ipinfo.io/ip",假),; WinHttpReq.Send; 结果:=微调(WinHttpReq.ResponseText); 除了 日志(GetExceptionMessage); 结果:

我使用下面的代码获取用户IP地址

函数GetIp:string; 变量 WinHttpReq:变体; 开始 尝试 WinHttpRequest:=CreateOleObject('WinHttp.WinHttpRequest.5.1'); WinHttpReq.Open('GET','http://ipinfo.io/ip",假),; WinHttpReq.Send; 结果:=微调(WinHttpReq.ResponseText); 除了 日志(GetExceptionMessage); 结果:='8.8.8'; 结束; 结束; 在获得用户的IP地址后,我需要检查该IP地址是否已经存在于我的在线JSON列表中


谢谢

最简单的解决方案是下载JSON文本文件并搜索IP地址

重用代码以使用HTTP(或更好的HTTPS)检索文档:

函数HttpGet(Url:string):string;
变量
WinHttpReq:变体;
开始
WinHttpRequest:=CreateOleObject('WinHttp.WinHttpRequest.5.1');
WinHttpReq.Open('GET',Url,False);
WinHttpReq.Send;
结果:=微调(WinHttpReq.ResponseText);
结束;
然后你可以像这样使用它:

var
Ip:字符串;
列表:字符串;
开始
尝试
Ip:=HttpGet('https://ipinfo.io/ip');
列表:=HttpGet('https://www.example.com/publicly/available/list.json');
如果Pos(“[”+Ip+“]”,列表)>0,则
开始
日志(格式('IP%s在列表中',[IP]);
结束
其他的
开始
日志(格式('IP%s不在列表中',[IP]);
结束;
除了
日志(格式('IP在列表中时出错测试-%s',[GetExceptionMessage]);
结束;
结束;
尽管你必须公开你的名单。如果不先登录Google,当前无法访问您的URL


如果要正确处理JSON,请参阅