2016-07-18 10 views
1

Ich verwende eine RESTless-API, um Datenbankabfragen durchzuführen, um nach eindeutigen Benutzernamen und E-Mails zu suchen. Jedoch bin ich nicht sicher, wie man den Server-Code von der Antwort erhält, verglichen mit dem Rückholwörterbuch. Für einige Suchvorgänge gibt es 404 und ein nicht leeres Wörterbuch zurück, wenn kein Ergebnis gefunden wird. Ich kann also nicht einfach überprüfen, ob das Rückgabediktat leer ist.Wie kann ich die Serverantwort von einer HTTP GET-Anfrage in Swift sehen?

do { 
     request.HTTPBody = try NSJSONSerialization.dataWithJSONObject(data, options: .PrettyPrinted) 
    } 
    catch { 
     print("failure") 
    } 
    request.addValue("application/json", forHTTPHeaderField: "Content-Type") 
    request.addValue("application/json", forHTTPHeaderField: "Accept") 

    let task = session.dataTaskWithRequest(request) { 
     data, response, error in 

     // Check for error 
     if error != nil 
     { 
      print("error=\(error)") 
      return 
     } 

     // Print out response string 
     let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding) 
     print("responseString = \(responseString)") 


     // Convert server json response to NSDictionary 
     do { 
      if let convertedJsonIntoDict = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary { 

       // Print out dictionary 
       print(convertedJsonIntoDict) 
       convertedDict = convertedJsonIntoDict 
      } 
     } 
     catch let error as NSError { 
      print(error.localizedDescription) 
     } 

    } 

    task.resume() 

    return convertedDict ?? nil 
+1

Veröffentlichen Sie Ihren Code, wo Sie die Anfrage stellen – dan

+0

Es ist ein Singleton, der das Wörterbuch vom Server zurückgibt. Versuchen herauszufinden, wie der Server-Code analysiert wird. – ggworean

Antwort

2

Es gibt Daten über die Reaktion im response Objekt in zur Fertigstellung Handler übergeben. Für HTTP/HTTPS-Anfragen ist es eine NSHTTPURLResponse, die eine statusCode Eigenschaft enthält, auf die Sie zugreifen können.

let task = session.dataTaskWithRequest(request) { 
     data, response, error in 

    if let httpResponse = response as? NSHTTPURLResponse { 
     let statusCode = httpResponse.statusCode 
     // do whatever with the status code 
    } 

    ... 
} 
+0

Wunderbar, genau wonach ich suche. Vielen Dank – ggworean