OpenSSL不适用于Delphi DX中的iOS模拟器 使用以下信息: http://blog.marcocantu.com/blog/using_ssl_delphi_ios.html http://docwiki.embarcadero.com/RADStudio/Seattle/en/OpenSSL https://plus.google.com/100777187605111792758/posts/SPnHdXvTTNu
我可以让它在设备上工作,但不能在iOS模拟器上工作。当我使用TWebbrowser.navigate时,相同的URL工作,但当然不能使用INDY ..请参阅下文,并可能提供如何在iOS模拟器上进行HTTPS调用的建议!这在早期版本的Rad Studio(XE4,XE5)之前有效,但是如果我的记忆对我有用,那么自XE7以来就没有。
我在usr / lib文件夹中有这些文件:
libcrypto.0.9.8.dylib
libssl.0.9.8.dylib
这是我的用途
uses
IdSSLOpenSSL,
{$IF Defined(IOS) and Defined(CPUARM)}
IdSSLOpenSSLHeaders_Static,
{$ELSE}
IdSSLOpenSSLHeaders,
{$ENDIF}
...
这是我的主要表单的onCreate
procedure TmLoginForm.FormCreate(Sender: TObject);
var
t:string;
begin
IdOpenSSLSetLibPath('/usr/lib/');
...
这是我使用的函数的一部分,在最后一行抛出异常
function ParseGroups(OnlyUserCreated:boolean):integer;
var
IdHTTP :TIdHTTP;
HTML :String;
JSON_Groups :TJSONObject;
Group :uGroup;
begin
result:=0;
HTML:='';
IdHTTP:=TIdHTTP.Create(nil);
IdHTTP.HandleRedirects:=false;
try
HTML:=IdHTTP.Get(URL_Host+ACCESSTOKEN);
错误是:'无法加载SSL库'
ShowMessage(IdSSLOpenSSLHeaders.WhichFailedToLoad);
显示空白消息
更新
添加
IdSSLOpenSSLHeaders.Load;
设置路径后现在导致whichFailedToLoad说:'无法加载/ usr / lib / libcrypto。'
答案 0 :(得分:3)
使用System.Net.HttpClient.THTTPClient
代替Indy组件。
var
http : THTTPClient;
html : string;
http := THTTPClient.Create;
try
html := http.Get( url ).ContentAsString();
...
finally
http.Free;
end;
它是操作系统中http函数的包装器。如果操作系统支持https,那么这个类也可以。
答案 1 :(得分:2)
你也可以关注这个漂亮的博文http://delphiworlds.com/2016/03/building-openssl-dylibs-for-ios-simulator/
它对我来说很好。我需要它,因为我的Soap客户端需要通过https连接,我不想重写soap libs。