我正在尝试使用TIdHTTP.Get将USPS Zip4结果网页源加载到变量中(以提取4位数的邮政编码后缀),例如,
PgSrc := IdHTTP1.Get('https://tools.usps.com/go/ZipLookupResultsAction!input.action?resultMode=0&companyName=&address1=1600+PENNSYLVANIA+AVE+NW&address2=&city=&state=Select&urbanCode=&postalCode=&zip=20500');
Run Code Online (Sandbox Code Playgroud)
如果我将它粘贴到任何浏览器中,上面的示例url工作正常.但是,在我的代码中,我收到EIdIOHandlerPropInvalid错误,并显示以下消息"IOHandler值无效".
我有很多邮政编码要查找,所以我很感激任何帮助,以避免这个错误或建议采用不同的方法.
代码在Windows 8上停止工作.它在Windows7,Windows XP上正常工作......我找到了解决此问题的方法:在Windows兼容模式下启动应用程序:Windows XP(Service Pack 3) - 代码正常工作.如果Windows兼容模式是Windows 7,则代码无效.我以管理员身份运行应用程序.已经尝试关闭防病毒和防火墙.我可以使用另一个smtp客户端发送具有相同参数的电子邮件,例如.Net SmtpClient.该问题在不同的Windows 8计算机(家庭,办公室)上重现.我创建了简单的测试应用.代码是用Delphi XE编写的,Indy 10.5.7,OpenSSL 1.0.1.3 dll都放在test.exe文件夹中.
有任何想法吗?
码:
SSLHandler.MaxLineAction := maException;
SSLHandler.SSLOptions.Method := sslvTLSv1;
SSLHandler.SSLOptions.Mode := sslmUnassigned;
SSLHandler.SSLOptions.VerifyMode := [];
SSLHandler.SSLOptions.VerifyDepth := 0;
SSLHandler.OnStatusInfo := IdSSLIOHandlerSocketOpenSSL1StatusInfo;
SMTP.IOHandler := SSLHandler;
SMTP.Host := 'smtp.gmail.com';
SMTP.Port := 587;
SMTP.UseTLS := utUseExplicitTLS;
SMTP.Username := FromAddress;
SMTP.Password := AuthPassword;
Email.From.Address := FromAddress;
Email.Recipients.EmailAddresses := ToAddress;
Email.Subject := Subject;
Email.Body.Text := Body;
SMTP.Connect;
SMTP.Send(Email);
SMTP.Disconnect;
Run Code Online (Sandbox Code Playgroud)
输出:
SSL状态:"在/初始化之前"
SSL状态:"在/初始化之前"
SSL状态:"SSLv3写客户端问候A"
SSL状态:"SSLv3读取服务器问候A"
EIdSocketError,消息'Socket Error#10060 Connection time out out.'