iOS 5 NSURLConnection到HTTPS服务器

Mel*_*Lai 5 iphone https nsurlconnection ios5

我已经搜索了几个小时,关于NSURLConnection允许我用来连接任何HTTPS服务器的代理/方法.即使我在这个网站上搜索,我找到了答案,答案对我来说不起作用.

如果您有任何人要我,我会上传代码链接.但我更喜欢简单UIWebView连接到任何的教程/示例代码/源代码HTTPS Servers.我会从那里拿走它.

提前致谢.

gam*_*zii 10

无论是连接到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];
}
Run Code Online (Sandbox Code Playgroud)

在iOS4.3之前,您需要做一些不同的事情,您可以在URLRequest类中添加一个类别,该类实现来自无法识别的主机的证书的安全绕过.

请注意,在执行此操作时会忽略证书未由公认的权威机构签名的任何解决方案,因为您正在打开潜在的安全漏洞,但通常至少需要针对具有自我/内部的测试服务器进行测试签署证书就可以了.

要在Web视图中打开URL连接:

NSURL *websiteUrl = [NSURL URLWithString:@"https://www.mysecuresite.com/"];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:websiteurl];
[myWebView loadRequest:urlRequest];
Run Code Online (Sandbox Code Playgroud)


Mel*_*Lai 4

好的,我找到了答案。也感谢 gamozzii 对我的帮助。我根据你的代码进行了搜索:)

在 UIWebView 中加载 HTTPS url

这对我有用。我也尝试过类似的链接https://www.google.com