2015-04-01 2 views
0

Попытка подключиться к web-сервису через https с базовым разрешением, однако я не могу заставить его работать. Сообщение об ошибке, которое я получил: Ошибка CFNetwork SSLHandshake (-9806). Ценю вашу помощь. Вот соответствующий код:basic Authorization - SSL Handshake failed

  var post : NSString = "username=\(username)&password=\(password)" 
     let postData = post.dataUsingEncoding(NSUTF8StringEncoding) 
     let base64EncodedCredential = postData!.base64EncodedStringWithOptions(nil) 



     NSLog("PostData: %@",post); 

     var url : NSURL = NSURL(string: "https://localhost:8080/webservice")! 

     var postLength : NSString = String(base64EncodedCredential.lengthOfBytesUsingEncoding(NSUTF8StringEncoding)) 

     var request:NSMutableURLRequest = NSMutableURLRequest(URL: url) 
     request.HTTPMethod = "POST" 
     request.HTTPBody = postData 
     request.setValue("Basic \(base64EncodedCredential)", forHTTPHeaderField: "Authorization") 
     request.setValue(postLength, forHTTPHeaderField: "Content-Length") 
     request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") 
     request.setValue("application/json", forHTTPHeaderField: "Accept") 


     let queue:NSOperationQueue = NSOperationQueue() 
     let urlConnection = NSURLConnection(request: request, delegate: self, startImmediately: true) 
     urlConnection!.start() 
+0

http://stackoverflow.com/questions/25914248/ios-8-has-broken-ssl-connection-in-my-app-cfnetwork-sslhandshake-failed-9806 –

ответ

0

Проблема не имеет ничего общего с базовой авторизацией, поскольку это делается после успешного установления связи SSL. На основании вашего URL из https://localhost:8080 я предположил бы, что у вас есть по крайней мере один из следующих проблем, но может быть несколько:

  • Нет HTTPS говорить, но простой HTTP. Порт 8080 очень необычен для HTTPS, но часто используется с HTTP.
  • Имя в сертификате не совпадает с именем в URL-адресе (localhost).
  • Сертификат не подписан доверенным лицом, доверенным клиентом.

Я рекомендую проверить URL-адрес с помощью браузера, чтобы узнать больше о проблеме.

+0

Да, кажется, когда я изменил его на https порт изменился на 8181. Спасибо! – Jhonny

Смежные вопросы