2017-03-03 4 views
0

Ich versuche, eine HTTPS-Anfrage an meine Website API und ich arbeite seit 2 Tagen daran, aber habe keine Lösung für alle meine Bedürfnisse (es ist in iOS 10). Mein https-Zertifikat ist unsigniert (https://api.example.de/v1/something) mit einem Token als Autorisierungskopf. dann möchte ich die JSON-Datei herunterladen und analysieren. hier mein Code ist:Wie Sie eine HTTPS GET-Anfrage mit Kopfzeilen mit unsigniertem Zertifikat Swift 3 machen?

func testDownload(token: String){ 

let url = URL(string: "https://api.example.de/v1/blabla") 
     var request = URLRequest(url: url!) 
     request.httpMethod = "GET" 
     request.addValue("Token \(token)", forHTTPHeaderField: "Authorization") 
     let session = URLSession.shared 

     let task = session.dataTask(with: request, completionHandler: { (data, response, error) -> Void in 
      do{ 
       let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! [String: AnyObject] 
       let parsed_data = json["data"] as? [[String: AnyObject]] ?? [] 
       let firstName = parsed_data[0]["firstName"] as? String 
       print("Firstname for first item is: \(firstName)") 
       self.employeeName.text = firstName 

      } catch let error as NSError{ 
       print("Sorry there is an Error: \(error)") 
      } 
     }) 
     task.resume() 

ich diesen Fehler, die in keinem Zusammenhang scheint:

2017-03-03 10:16:52.636 44 App[1763:34479] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9843) 
fatal error: unexpectedly found nil while unwrapping an Optional value 

btw, habe ich verändert bereits die info.plist wie This Screenshot und haben auch diesen Code auf zwei verschiedenen getestet APIs (eine mit einer zertifizierten SSL und eine mit einem normalen HTTP-Protokoll) und analysiert die Daten.

Was mache ich falsch? Bitte helfen Sie mir

Antwort

0

Das Problem war nur das Zertifikat, wenn ein HTTPS-Zertifikat nicht signiert ist dann gibt es keine Möglichkeit, eine HTTP-Anfrage zu machen. Wenn es HTTPS ist, muss das Zertifikat signiert werden.

Das Problem wurde gelöst, sobald wir unser Zertifikat unterschrieben haben.

Verwandte Themen