2016-07-18 81 views
1

我正在使用RESTless API來進行數據庫查詢,以檢查唯一用戶名和電子郵件等內容。然而,我不知道如何從響應中獲取服務器代碼,而不是獲取返回字典。對於一些搜索,如果沒有找到結果,則返回404和非空字典。所以我不能簡單地檢查返回字典是否爲空。如何在Swift中看到來自HTTP GET請求的服務器響應?

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

在發出請求的地方發佈代碼 – dan

+0

這是一個從服務器返回字典的單例。試圖找出如何解析出服務器代碼。 – ggworean

回答

2

存在有關傳遞到完成處理程序的response對象中的響應數據。對於HTTP/HTTPS請求,這是一個NSHTTPURLResponse,其中包含您可以訪問的statusCode屬性。

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

很棒,正是我在找的。謝謝 – ggworean

相關問題