有人可以帮我了解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];
}
当我实现上面的委托时,我成功地从服务器得到了响应。任何人都可以帮助我知道这是如何工作的。代表中的每个参数是什么以及它在做什么?
提前致谢。
答案 0 :(得分:2)
将protectionSpace
视为服务器。委托方法connection: canAuthenticateAgainstProtectionSpace
用于询问您能否处理服务器的身份验证要求。在您的情况下,您说“如果我们谈论SSL证书(这是NSURLAuthenticationMethodServerTrust
通常意味着什么),是的,我可以处理”。
然后,连接会要求您<{> 1}} 执行,并为此特定服务器提供NSURLCredential。使用connection:didReceiveAuthenticationChallenge
,您可以使用存储在钥匙串中的信息来创建凭证,以获取此服务器的证书。使用credentialForTrust:
,您最终会告诉连接使用此凭据回答质询,即使用钥匙串数据验证证书。
答案 1 :(得分:0)