2014-01-06 4 views
6

이미지를 보안 URL 뒤에있는 보안 URL에서 다운로드하십시오. URL이 https://foo.com/bar.pngNSURLSession이 간헐적 인 SSLHandshake 실패 (-9810) 오류

가끔 SSLHandshake 오류가 발생합니다. 때로는 오류가 한 번 발생하지만 가끔 오류가 발생하여 파일을 다운로드 할 수없는 경우가 있습니다.

DownloadImageApp[2914] <Warning>: CHALLENGE!!! (NSURLAuthenticationMethodServerTrust) 
DownloadImageApp[2914] <Warning>: server = foo.com 
DownloadImageApp[2914] <Warning>: CFNetwork SSLHandshake failed (-9810) 
DownloadImageApp[2914] <Warning>: CHALLENGE!!! (NSURLAuthenticationMethodServerTrust) 
DownloadImageApp[2914] <Warning>: server = foo.com 
DownloadImageApp[2914] <Warning>: CHALLENGE!!! (NSURLAuthenticationMethodNTLM) 
DownloadImageApp[2914] <Warning>: NSURLAuthenticationMethodNTLM 

나는 완전히 실패하더라도 도전
- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential *))completionHandler { 
    NSLog(@"CHALLENGE!!! (%@)", challenge.protectionSpace.authenticationMethod); 

    if (challenge.error) 
     NSLog(@" -- error: %@", challenge.error.description); 
    if (challenge.previousFailureCount > 0) 
     NSLog(@" -- previous failure count = %d", challenge.previousFailureCount); 
    if (challenge.proposedCredential) 
     NSLog(@" -- proposed credential user: %@", challenge.proposedCredential.user); 

    if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { 
     NSLog(@" server = %@", challenge.protectionSpace.host); 
     completionHandler(NSURLSessionAuthChallengeUseCredential, [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]); 
    } else if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodNTLM]) { 
     NSLog(@" NSURLAuthenticationMethodNTLM"); 
     NSURLCredential *credential = [NSURLCredential credentialWithUser:@"username" password:@"passwordIsSecretShhh" persistence:NSURLCredentialPersistenceForSession]; 
     completionHandler(NSURLSessionAuthChallengeUseCredential, credential); 
    } else { 
     NSLog(@" ????"); 
    } 
} 

를 처리하기 위해 다음 코드를 사용하고 난 여전히 사파리, URL의 형태에 이상 팝업 수로드하고로드가 없습니다. 그래서 나쁜 웹 문제 나 호스팅 웹 서버의 문제가 아닌 문제를 일으킬 수있는 아이디어를 찾고 있습니다.

+0

이 핸드 쉐이크 오류에 대한 해결책이 있습니까? – Ekra

+0

Nope. 아니야. 때로는 재 시도하고 잘 작동하지만 때로는 3 번 연속 실패하고 전체 연결이 실패하는 결과가 발생합니다. – DBD

답변

4

마지막으로이 문제가 해결되었습니다. 그것은 내 코드와 관련이 없습니다.

문제는 서버에 설치된 Trend SSL 모니터링 소프트웨어 때문일 수 있습니다. 소프트웨어가 비활성화되면 즉시 오류가 사라집니다.

위대한 답변은 아니지만 잘하면 다른 사람을 도울 것입니다.