Https的数据请求的证书设置 CFNetwork SSLHandshake failed (-9806)
来源:互联网 发布:数据传输线 编辑:程序博客网 时间:2024/06/05 16:30
对于https的网络请求很多人都比较头疼,不止iOS包括pc端和移动端的很多请求都离不开https
CFNetwork SSLHandshake failed (-9806)
error = Error Domain=NSURLErrorDomain Code=-1202 "The certificate for this server is invalid. You might be connecting to a server that is pretending to be “192.168.10.16” which could put your confidential information at risk."
遇到以上错误的请举手,没错这就是臭名昭著的https请求出现的错误。归结原因证书原因。但是如何设置呢,你会发现百度一下子废物了。现在就从iOS原生的网络请求着手解决这一问题.
研究了一下NSURLConnection这个类会发现一下两个代理
- (BOOL)connection:(NSURLConnection*)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace*)protectionSpace
- (void)connection:(NSURLConnection*)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge*)challenge
没错,iOS本身提供了对于https请求证书的设置,就在代理方法里。现在ok了,只要解决了代理的设置就可以完成完整的https请求首先做好数据请求的相关准备
接着设置证书权限问题
看一下控制台输出
2013-11-02 14:07:07.719 HttpsRequest[485:70b] didReceiveAuthenticationChallenge NSURLAuthenticationMethodServerTrust 0
2013-11-02 14:07:07.720 HttpsRequest[485:70b] get the whole response
表明证书确实已经设置完成,现在可以做数据请求了
这里用的是NSURLConnection的代理方法来执行数据接受,因为块方法没办法做证书相关的设置
现在看一下请求回来的数据
returnString = [{"id":"52707093fc8712d98a867bcd","title":"八达岭长城走一走","date":1383177600000,"createUser":{"id":"18638097289","username":"lisi"},"state":"0"},{"id":"52707063fc8712d98a867bcc","title":"雍和宫一日游","date":1385856000000,"createUser":{"id":"18638097289","username":"lisi"},"state":"0"},{"id":"5270700cfc8712d98a867bca","title":"雍和宫逛一逛","date":1388361600000,"createUser":{"id":"18638097289","username":"lisi"},"state":"0"},{"id":"52707047fc8712d98a867bcb","title":"香山一日游","date":1388448000000,"createUser":{"id":"18638097289","username":"lisi"},"state":"0"}]
到这里为止,https的数据请求证书问题已经得到了解决。要说一下的是很多人会用AFNetwork的第三方,因为这个框架也是对NSURLConnection的封装和扩展,github上有对此类问题的细致说明,可以看看。这里只解决方向问题,细节问题还有待各位自己研究- Https的数据请求的证书设置 CFNetwork SSLHandshake failed (-9806)
- https请求 CFNetwork SSLHandshake failed (-9807)
- https请求 CFNetwork SSLHandshake failed (-9807) A connection failure occurred: SSL problem
- CFNetwork SSLHandshake failed (-9847)
- Https的数据请求的证书设置
- Https的数据请求的证书设置
- AFNetworking 3.0 https 报错问题 CFNetwork SSLHandshake failed (-9801)
- 验证 HTTPS 请求的证书(五)
- 验证 HTTPS 请求的证书(五)
- 验证 HTTPS 请求的证书(五)
- 关于https访问的证书设置
- 新浪微博请求数据出错(Android Volley Https证书不信任)的解决方案
- CFNetwork读取iOS设备的代理设置
- https请求数据,ca机构安全证书
- weblogic发送https请求的证书错误的解决办法
- java进行https请求以及相关证书的生成
- 日常开发——Android请求自定义证书的https
- iOS HTTPS安全请求 验证服务器返回的证书
- 六 (6.7)C/C++运行库注意事项 6.8 了解自己的身份
- 我遇到的java笔试题->Swing组件JList的列表数据修改了,如何通知JList改变显示?
- BZOJ 3670 NOI 2014 动物园 变形KMP
- DLNA android关于Platinum库的dmr底层c++代码实现
- Hibernate入门基础
- Https的数据请求的证书设置 CFNetwork SSLHandshake failed (-9806)
- 信 标 b e a c o n 作用,beacon frames
- IE的缓存导致ajax不走后台的问题
- BZOJ 3672 NOI2014 购票 树的分治 NOI2014全AC达成!!!!
- SQL 巧妙的乱序排列
- Android - 时间 日期相关组件
- CSS3 主要知识点复习总结+HTML5 新增标签
- 丰功硕德
- opengl模型加载