[英]iOS 5 NSURLConnection to HTTPS Servers
我搜索了几个小时的NSURLConnection
委托/方法,允许我用来连接任何HTTPS服务器。 即使我在这个网站上搜索,我找到了答案,答案对我来说不起作用。
如果您有任何人要我,我会上传代码链接。 但我更喜欢连接到任何HTTPS Servers
的简单UIWebView
的教程/示例代码/源代码。 我会从那里拿走它。
提前致谢。
无论是连接到HTTPS还是HTTP站点,对于NSURLConnection和UIWebView控件都应该是完全透明的。 您可能需要做的唯一事情是,如果服务器站点证书是自签名证书或不可验证证书,请添加代码以绕过浏览器获得的身份验证质询。 (即相当于证书由未知权威机构签名并且您是否愿意接受它的消息)。
只需使用@“https://www.myhttpsite.com/”URL,它的工作方式应与普通的HTTP网址相同。
要绕过无法识别的证书签名者的安全问题,对于NSURLConnection,请将以下内容添加到委托方法中:
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
NSArray *trustedHosts = [NSArray arrayWithObjects:@"mytrustedhost",nil];
if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]){
if ([trustedHosts containsObject:challenge.protectionSpace.host]) {
[challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
}
}
[challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
}
在iOS4.3之前,您需要做一些不同的事情,您可以在URLRequest类中添加一个类别,该类实现来自无法识别的主机的证书的安全绕过。
请注意,在执行此操作时会忽略证书未由公认的权威机构签名的任何解决方案,因为您正在打开潜在的安全漏洞,但通常至少需要针对具有自我/内部的测试服务器进行测试签署证书就可以了。
要在Web视图中打开URL连接:
NSURL *websiteUrl = [NSURL URLWithString:@"https://www.mysecuresite.com/"];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:websiteurl];
[myWebView loadRequest:urlRequest];
好的,我找到了答案。 谢谢gamozzii也帮助我。 我根据你的代码进行了搜索:)
这适合我。 我也尝试过像https://www.google.com
这样的链接
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.