我使用TidHTTP + TIdSSLIOHandlerSocketOpenSSL + 2 DLL:来自http://indy.fulgan.com/SSL的 ssleay32.dll和libeay32.dll .
但我可以在HTTP Analyzer中看到我的程序的所有工作!它可以用作HTTP,而不是HTTPS.如果我使用Opera,我看不到使用相同网站下载(https://esta.cbp.dhs.gov/esta).
我没有为TidHTTP和TIdSSLIOHandlerSocketOpenSSL设置任何特殊参数(可能是我必须但我不知道到底是什么).
我必须使用TIdSSLVersion(sslvSSLv23)+ SSL证书的位置吗?我在哪里可以获得此证书?还是只有RootCertFile?
如何将idHttp的端口更改为443(我必须这样做吗?)?
我用:
procedure TForm1.FormCreate(Sender: TObject);
var mem:tmemorystream;
begin
try
mem:=TMemoryStream.Create();
try
idhttp1.Get('https://esta.cbp.dhs.gov/esta/',Mem);
except
on E : Exception do ShowMessage(E.Message);
end;
finally
mem.Free;
idhttp1.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
请参阅我的视频:http://liga-installer.realservers.info/ssl.mp4
截屏:

谢谢谢谢你的帮助!
Bru*_*Gee 11
这个简单的示例适用于Delphi XE开箱即用,因此您无需在客户端更改端口或使用证书.它基于RosettaCode的示例:
Uses
IdHttp, IdSSLOpenSSL
Run Code Online (Sandbox Code Playgroud)
...
procedure TForm2.Button1Click(Sender: TObject);
var
s: string;
lHTTP: TIdHTTP;
begin
lHTTP := TIdHTTP.Create(nil);
try
lHTTP.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(lHTTP);
lHTTP.HandleRedirects := True;
s := lHTTP.Get('https://esta.cbp.dhs.gov/esta/');
RichEdit1.Text := s;
finally
lHTTP.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
问题可能是您需要部署的DLL的版本.由于最新版本修复了安全问题,因此我建议将您的Indy版本升级到最新版本,并使用fulgan网站上最新的OpenSSL库.
更新:您的意思是您无法使用网络浏览器查看该网站,或者当您这样做时,您无法在HTTP分析器中看到流量?正如Rob提到的,如果使用常规Web浏览器看不到该站点,那么问题可能不在于您的应用程序.
| 归档时间: |
|
| 查看次数: |
20020 次 |
| 最近记录: |