2015-04-01 147 views
0

試圖通過基本授權通過https連接到web服務,但我無法讓它工作。我收到的錯誤消息:CFNetwork SSLHandshake失敗(-9806)。感謝你的幫助。這裏是相關的代碼:基本授權 - SSL握手失敗

  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 – 2015-04-01 18:00:05

回答

0

該問題與基本授權無關,因爲這是在成功的SSL握手之後完成的。根據您的https://localhost:8080網址,我建議你有以下問題的至少一個,但也許幾個:

  • 沒有HTTPS說,但普通HTTP。端口8080對於HTTPS非常不尋常,但通常與HTTP一起使用。
  • 證書中的名稱與URL中的名稱不匹配(localhost)。
  • 證書未由客戶端信任的機構簽名。

我建議使用瀏覽器檢查URL以查找有關該問題的更多信息。

+0

是的,當我將它改爲https時端口改爲8181.謝謝! – Jhonny 2015-04-01 18:27:26