ios https 请求讲解

开发SDK中,用到了ios请求https接口的问题,开始在度娘那里搜了一个,上面介绍叫做忽略证书认证,然后就是一坨一坨的码段子,菊花+C后,OK!跑通了!

本以为一知半解可以糊弄过去,后来后台处理发现问题,当被后台问起我的处理操作时才发现,这部分我并没有处理清晰,认识上存在藏有隐患,不能保证代码的可靠性。。

So又重新的找度娘,结果发现,千篇一律的复制,全部都叫做忽略证书。。绕过证书。。这么解释并不能令人信服!最后都是按照自己的理解,换一个同义词而已,疯了疯了。。

当然,如果只是为了完成功能,那这么做可以,代码我就不往上放了。而我觉得如果一个新认知的东西只是知道会用,那只是技术员级别干的事。更加深入的了解,才能让我用的更踏实,这才是体面的工程师。

问过安卓的工程师,他们的处理是信任一切证书,我按照这个思路开始疯狂的在谷哥,病(必应)等了解,最终还是哥更了解我,在stackoverflow上面有所提到,信任任何证书,达到通过验证的目的。
由于我并不是在webview上面做展示,只是NSURLConnection去请求数据,所以不存在与webview对接的技术烦恼,好了,下面是网上基本都可以找到的代码:

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

- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
if ([challenge previousFailureCount] ==0){
NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
[challenge.sender useCredential:credential forAuthenticationChallenge:challenge];
}else{
[[challenge sender]cancelAuthenticationChallenge:challenge];
}
}
具体的执行顺序可以打断点自行了解,方法在官方说明也介绍的很详细,我就不多说了。。
以上代码只针对非第三方认证请求(自做的证书)的,可以完全信任,如果是第三方的,那就需要写一段证书的验证处理了,代码可以去下面的博客里面看。
给大家两个https请求的博客,个人觉得还不错:
http://qingyunliao.com/category/ios/
http://blog.csdn.net/kmyhy/article/details/7733619
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值