https请求如何使用NSURLConnection进行处理

时间:2014-01-09 12:45:41

标签: ios objective-c https nsurlconnectiondelegate

有人可以帮我了解https请求如何使用NSRULConnection进行处理吗?我经历了很多教程和Apple文档。但我无法理解它是如何工作的。我已经实现了以下代理来处理https请求。

- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace 
{    
    return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust];
}

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{       
    [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
}

当我实现上面的委托时,我成功地从服务器得到了响应。任何人都可以帮助我知道这是如何工作的。代表中的每个参数是什么以及它在做什么?

提前致谢。

2 个答案:

答案 0 :(得分:2)

protectionSpace视为服务器。委托方法connection: canAuthenticateAgainstProtectionSpace用于询问您能否处理服务器的身份验证要求。在您的情况下,您说“如果我们谈论SSL证书(这是NSURLAuthenticationMethodServerTrust通常意味着什么),是的,我可以处理”。

然后,连接会要求您<{> 1}} 执行,并为此特定服务器提供NSURLCredential。使用connection:didReceiveAuthenticationChallenge,您可以使用存储在钥匙串中的信息来创建凭证,以获取此服务器的证书。使用credentialForTrust:,您最终会告诉连接使用此凭据回答质询,即使用钥匙串数据验证证书。

答案 1 :(得分:0)