使用AFNNetworking訪問網絡,在開發調試階段,可能會碰到后端證書不受信任導致訪問出錯.在不改變AFNNetworking源碼的前提下解決方法如下:
問題描述,細心可以發現報錯信息里面已經提示是證書問題了
Error Domain=NSURLErrorDomain Code=-1202 "The certificate for this server is invalid. You might be connecting to a server that is pretending to be “10.0.82.221” which could put your confidential information at risk." UserInfo={NSURLErrorFailingURLPeerTrustErrorKey=<SecTrustRef: 0x600000117460>, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9843, NSErrorPeerCertificateChainKey=(
"<cert(0x7f964e077600) s: app.jtxxshopping.com i: Symantec Basic DV SSL CA - G1>",
"<cert(0x7f964e075000) s: Symantec Basic DV SSL CA - G1 i: VeriSign Class 3 Public Primary Certification Authority - G5>"
), NSUnderlyingError=0x608000441bc0 {Error Domain=kCFErrorDomainCFNetwork Code=-1202 "(null)" UserInfo={_kCFStreamPropertySSLClientCertificateState=0, kCFStreamPropertySSLPeerTrust=<SecTrustRef: 0x600000117460>, _kCFNetworkCFStreamSSLErrorOriginalValue=-9843, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9843, kCFStreamPropertySSLPeerCertificates=(
"<cert(0x7f964e077600) s: app.jtxxshopping.com i: Symantec Basic DV SSL CA - G1>",
"<cert(0x7f964e075000) s: Symantec Basic DV SSL CA - G1 i: VeriSign Class 3 Public Primary Certification Authority - G5>"
)}}, NSLocalizedDescription=The certificate for this server is invalid. You might be connecting to a server that is pretending to be “10.0.82.221” which could put your confidential information at risk., NSErrorFailingURLKey=https://10.0.82.221/jtshopping/rest/qiniu/getToken, NSErrorFailingURLStringKey=https://10.0.82.221/jtshopping/rest/qiniu/getToken, NSErrorClientCertificateStateKey=0}
解決方法
// 1.初始化單例類
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
// 2.設置非校驗證書模式
manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
manager.securityPolicy.allowInvalidCertificates = YES;
[manager.securityPolicy setValidatesDomainName:NO];
備注:如有不足還請告知.