2014-01-06 13 views
6

セキュリティウォールの背後にあるセキュアな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を入力する以上開くことができますロードし、それをロードしていません。だから私は悪いネットワークの問題や、Webサーバーをホスティングしている不自然な問題以外のこの問題を引き起こすアイデアを探しています。

+0

このハンドシェイクエラーの解決策はありますか? – Ekra

+0

Nope。物事ではありません。再試行して正常に動作することがありますが、3回連続して失敗し、結果が完全に接続できないことがあります。 – DBD

答えて

4

私はついにこの問題を解決しました。それは私のコードとは関係がありませんでした。

問題はTrend SSL監視ソフトウェアがサーバーにインストールされているためです。ソフトウェアが無効にされると、エラーは直ちに消えた。

偉大な答えではありませんが、うまくいけば他の誰かを助けるでしょう。

関連する問題