2017-05-03 6 views
0

Je rencontre des problèmes avec une connexion à un serveur. Je veux simplement envoyer un nom d'utilisateur et mot de passe et obtenir des données à partir d'un fichier XML.Swift 3 Connexion au serveur avec un certificat non valide pour XML

let loginString = String(format: "%@:%@", username, password) 
    let loginData = loginString.data(using: String.Encoding.utf8)! 
    let base64LoginString = loginData.base64EncodedString() 

    let baseUrl = "xxxxxx" 
    let request = NSMutableURLRequest(url: NSURL(string: baseUrl)! as URL) 
    request.httpMethod = "POST" 
    request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization") 
    let session = URLSession.shared 
    request.httpMethod = "GET" 

    var err: NSError? 

    let task = session.dataTask(with: request as URLRequest) { 
     (data, response, error) in 

     if data == nil { 
      print("dataTaskWithRequest error: \(error)") 
      return 
     } 

     let xml = SWXMLHash.parse(data!) 
     print(xml["mobile_devices"]["mobile_device"]["serial_number"].element?.text) 

     DispatchQueue.main.async(execute: { 
      // use main thread for UI updates 
     }) 

    } 
    task.resume() 

Quand je cours, je reçois l'erreur suivante (s):

nw_coretls_callback_handshake_message_block_invoke_3 tls_handshake_continue: [-9812] 2017-05-04 08:20:45.311 xxxx[23410:4428038] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)

NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813) dataTaskWithRequest error: Optional(Error Domain=NSURLErrorDomain Code=-1202 "The certificate for this server is invalid. You might be connecting to a server that is pretending to be “xxxxxxx” which could put your confidential information at risk." UserInfo={NSURLErrorFailingURLPeerTrustErrorKey=, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9813, NSErrorPeerCertificateChainKey=("cert(0x7f88d8834000) s: xxxxxxx JSS Built-in Certificate Authority>",

Je ne l'ai jamais vraiment fait quoi que ce soit avec les API et les choses avant, donc j'apprends que je vais. Auparavant, j'ai dû modifier le fichier plist pour permettre la connexion, et cela a corrigé un problème que j'avais avant. J'en suis arrivé là mais je ne sais pas trop comment le dépasser.

J'ai vu ceci: Connect to a Server with Invalid Certificate using NSURLSession (swift2,xcode7,ios9) mais il a cassé la ligne

let session = URLSession.shared 

dans mon code.

Je l'ai vu aussi bien, mais je ne suis pas sûr comment l'utiliser:

Swift: How to request a URL with a self-signed certificate?

Répondre