【问题标题】:iOS 5 - connect to an HTTPS serveriOS 5 - 连接到 HTTPS 服务器
【发布时间】:2011-12-17 00:08:23
【问题描述】:

我正在尝试克服 iOS 5 中关于 NSURLConnection 所做的更改。

基本上方法发生了变化,因此如果您需要连接到使用 HTTPS 的站点并发送凭据以进行身份​​验证,则不能再这样做了,因为许多方法已被弃用。

有什么地方可以让我获得一个工作示例,说明我应该如何编写代码以使用符合 iOS5 的代码?我已经检查了文档和标题,但没有一个单一的来源向我展示如何与一个示例建立这种联系,它显示了代码在哪个文件中的位置(假设我只是从 Xcode 的标准模板开始,比如单视图模板或标签栏模板)。

我非常感谢任何建议;由于我的应用程序将在 iOS 5 上运行,我想使用新程序,但缺乏文档和教程让我的任务比我想象的要难。

【问题讨论】:

    标签: ios nsurlconnection


    【解决方案1】:

    你应该使用 NSURLCredentialStorage 单例。在使用 NSURLConnection 之前,您需要通过调用 NSURLCredentialStorage 方法之一将凭据添加到存储中,例如:

    - (void)setCredential:(NSURLCredential *)credential forProtectionSpace:(NSURLProtectionSpace *)protectionSpace
    

    【讨论】:

    • 谢谢 Joris,所以这些是我应该遵循的步骤吗? 1:将代理添加到 NSURLConnectionDelegate 到我的 ViewController 2:将凭据添加到 NSURLCredentialStorage 3:像在您的 sn-p 中一样传递凭据?
    • 不,我展示的方法是将它们添加到 CredentialStorage。一旦他们在那里,只需使用您的 NSURLConnection 而不必担心凭据。如果它们在 NSCredentialStorage 中,它们将被自动使用。
    • 感谢 Joris 的澄清;之前从未使用过 NSURLCredential :)
    • 您好,您能否展示一下您如何实现该方法的步骤?我在这里有点迷路。对不起。
    【解决方案2】:

    我用这个:

    - (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:
           (NSURLAuthenticationChallenge *)challenge {
    
    if ([challenge previousFailureCount] <= maxRetryCount ) {
        NSURLCredential *newCredential =
        [NSURLCredential
         credentialWithUser: userName
         password:password
         persistence:NSURLCredentialPersistenceForSession];
    
        [[challenge sender]
         useCredential:newCredential
         forAuthenticationChallenge:challenge];
    
       }
       else
       {
         NSLog(@"Failure count %d",[challenge previousFailureCount]);
       }
    }
    

    这对我来说很好。但是,似乎也接受了自签名证书。我可能需要发布一个单独的问题。

    【讨论】:

    • 感谢一月的回复;它确实有效,但它会接受任何自签名的证书;我将不得不使用 Joris 提到的解决方案。
    • 您好 user1006198,我找到了适用于这种方法的解决方案。见stackoverflow.com/questions/8564812/…;我需要一个挑战方法(而不是 Joris 的单例方法,因为如果会话无效,我需要重新显示一个登录框,并且我不想存储用户凭据超过会话持续时间。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 2020-06-16
    • 2014-04-06
    • 2013-10-28
    相关资源
    最近更新 更多