이와 같은 URL을 트위터에서 이미지 파일을로드 할 때이 오류의 간헐적 인 발생이 : https://pbs.twimg.com/media/Ck-9Oc6XIAAIb8B.jpg간헐적 인 HTTP로드 kCFStreamErrorDomainSSL 실패 (-9802)
iOS8의 타겟팅과 두 개의 ios9 장치와 시뮬레이터에 실패 , 간헐적으로, 일반적으로 적어도 20 %의 시간.
재 시도 할 수있는 재로드 버튼이있는 테스트 앱이 있습니다. 처음 작동하면 모든 후속 다시로드가 작동하는 것 같습니다 (아마도 캐싱?). 첫 번째 실패하면 결국 몇 번 (예 : 5-10) 다시 시도한 후에 성공적으로로드됩니다.
물론 트위터에 적절한 SSL 설정이 있습니다. 무슨 일이야?
ALS를 완전히 비활성화하거나이 도메인에 대해서만 이상적으로 사용하지 않으려합니다.
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var myImageView: UIImageView!
@IBAction func didPressReload(sender: AnyObject) {
loadImage()
}
func loadImage() {
myImageView.imageFromUrl("https://pbs.twimg.com/media/Ck-9Oc6XIAAIb8B.jpg")
}
}
extension UIImageView {
public func imageFromUrl(urlString: String) {
if let url = NSURL(string: urlString) {
let request = NSURLRequest(URL: url)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {
(response: NSURLResponse?, data: NSData?, error: NSError?) in
if (error != nil) {
NSLog("Failed to load URL \(response?.URL?.absoluteString): \(error)")
}
if let imageData = data as NSData? {
self.image = UIImage(data: imageData)
}
}
}
}
}
오류 세부 실패 : 내 실수가 가정 한
2016-06-18 18:17:19.975 TestSSL[1027:420188] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)
2016-06-18 18:17:20.011 TestSSL[1027:420137] Failed to load URL nil: Optional(Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." UserInfo={NSLocalizedDescription=An SSL error has occurred and a secure connection to the server cannot be made., NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, _kCFStreamErrorDomainKey=3, NSUnderlyingError=0x14597da0 {Error Domain=kCFErrorDomainCFNetwork Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." UserInfo={NSLocalizedDescription=An SSL error has occurred and a secure connection to the server cannot be made., _kCFNetworkCFStreamSSLErrorOriginalValue=-9802, _kCFStreamPropertySSLClientCertificateState=0, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, _kCFStreamErrorCodeKey=-9802, kCFStreamPropertySSLPeerTrust=<SecTrustRef: 0x146977b0>, _kCFStreamErrorDomainKey=3, kCFStreamPropertySSLPeerCertificates=<CFArray 0x14595f90 [0x3b0ca840]>{type = immutable, count = 4, values = (
0 : <cert(0x14696590) s: *.twimg.com i: DigiCert High Assurance CA-3>
1 : <cert(0x14696a90) s: DigiCert High Assurance CA-3 i: DigiCert High Assurance EV Root CA>
2 : <cert(0x14696eb0) s: DigiCert High Assurance EV Root CA i: Baltimore CyberTrust Root>
3 : <cert(0x146971e0) s: Baltimore CyberTrust Root i: Baltimore CyberTrust Root>
)}, NSErrorFailingURLStringKey=https://pbs.twimg.com/media/Ck-9Oc6XIAAIb8B.jpg, NSErrorFailingURLKey=https://pbs.twimg.com/media/Ck-9Oc6XIAAIb8B.jpg}}, _kCFStreamErrorCodeKey=-9802, NSErrorFailingURLStringKey=https://pbs.twimg.com/media/Ck-9Oc6XIAAIb8B.jpg, NSErrorPeerCertificateChainKey=<CFArray 0x14595f90 [0x3b0ca840]>{type = immutable, count = 4, values = (
0 : <cert(0x14696590) s: *.twimg.com i: DigiCert High Assurance CA-3>
1 : <cert(0x14696a90) s: DigiCert High Assurance CA-3 i: DigiCert High Assurance EV Root CA>
2 : <cert(0x14696eb0) s: DigiCert High Assurance EV Root CA i: Baltimore CyberTrust Root>
3 : <cert(0x146971e0) s: Baltimore CyberTrust Root i: Baltimore CyberTrust Root>
)}, NSErrorClientCertificateStateKey=0, NSURLErrorFailingURLPeerTrustErrorKey=<SecTrustRef: 0x146977b0>, NSErrorFailingURLKey=https://pbs.twimg.com/media/Ck-9Oc6XIAAIb8B.jpg})
해결책을 찾았습니까? "나는 ALS를 비활성화하고 싶지 않다"는 것은 무엇을 의미합니까? – Sam