2017-05-03 11 views
0

Ich habe einige Probleme mit einer Verbindung zu einem Server. Ich möchte einfach einen Benutzernamen und ein Passwort senden und einige Daten aus einer XML-Datei erhalten.Swift 3 Verbinden mit Server mit ungültigem Zertifikat für 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() 

Wenn ich es laufen lasse, erhalte ich folgende Fehlermeldung (e):

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>",

Ich habe noch nie wirklich mit APIs und Dinge, bevor etwas getan, so lerne ich, wie ich gehe. Zuvor musste ich die PLIST-Datei bearbeiten, um die Verbindung zu ermöglichen, und das behob ein Problem, das ich zuvor hatte. Ich bin soweit, aber ich bin mir nicht sicher, wie ich darüber hinwegkommen soll.

sah ich dies: Connect to a Server with Invalid Certificate using NSURLSession (swift2,xcode7,ios9) aber es brach in meinem Code die

let session = URLSession.shared 

Linie.

Ich habe das auch gesehen, aber ich bin nicht sicher, wie es zu benutzen:

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

Antwort

Verwandte Themen