JSON ошибка ответа NSSingleObjectArray при получении из API - PullRequest
0 голосов
/ 11 апреля 2020

API, который у меня есть, это метод post, а ответ в postman выглядит следующим образом:

URL-адрес публикации: https://xxxxxx/xxxxxxxx/public/api/chatrequest Параметры тела: property_id: 40, identity: demo Заголовок: x-token и тип содержимого

Ответ выглядит следующим образом:

{
    "Token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImN0eSI6InR3aWxpby1mcGE7dj0xIn0.eyJqdGkiOiJTS2E4ZGNjNTRlZTkwODYyNDcyNWRiN2Q4ODlhZjY3YTJkLTE1ODY2MjAyMDIiLCJpc3MiOiJTS2E4ZGNjNTRlZTkwODYyNDcyNWRiN2Q4ODlhZjY3YTJkIiwic3ViIjoiQUNjNTllMWMzN2ZmZjdiZmIyYTIxMzkyOGY3NTdjMzhkYyIsImV4cCI6MTU4NjYyMzgwMiwiZ3JhbnRzIjp7ImlkZW50aXR5IjoiMTciLCJjaGF0Ijp7InNlcnZpY2Vfc2lkIjoiSVMxODQ1Mzg5ZDhmYjE0N2M4OTU2Zjg5ZmM0MTk1ODdkYSJ9fX0.FeLxlmdYr8WglNs_2vH0qYGbeRJ9vaVoWIVE8qTn6hA",
    "identity": 17,
    "ChannelID": "jNqNLaUS2mUg1TRqMVPua5ghcFDpBSUI",
    "ChannelSid": "CHb24932d10fe34bca82153c87ba18edc1",
    "ChannelData": {
        "id": 76,
        "propertys_id": "40",
        "from_user": "17",
        "to_user": "18",
        "channel": "jNqNLaUS2mUg1TRqMVPua5ghcFDpBSUI",
        "sid": "CHb24932d10fe34bca82153c87ba18edc1",
        "from_token": "MB368a9a6ea1e64078abaa98b61952eb25",
        "to_token": "MB15aea3092366476e8ab437d303fbdab5",
        "created_at": "2020-04-10 17:01:52",
        "updated_at": "2020-04-10 17:01:52"
    }
}

Код, используемый для получения этого ответа, выглядит следующим образом:

fetchToken(params: ["property_id":"21"]) {response,error in
                        var token: String?
                        token = response["token"] as? String
                        var clientsid: String?
                        clientsid = response["ChannelSid"] as? String
                        completion(token != nil, token,clientsid)
                    }


  func fetchToken(params:[String:String], completion:@escaping (NSDictionary, NSError?) -> Void) {
        var request = URLRequest(url: URL(string: "https://reachwebdemo.com/listcrib/public/api/chatrequest")!)
            request.httpMethod = "POST"
            let postString = postDataFrom(params: params)
           print("poststring is",postString)
            request.httpBody = postString.data(using: .utf8)
            request.setValue("application/json", forHTTPHeaderField: "Content-Type")
            request.setValue(self.usertoken, forHTTPHeaderField: "x-token")
            let task = URLSession.shared.dataTask(with: request) { data, response, error in
                           guard let data = data, error == nil else {
                               print("error=\(String(describing: error))")
                               completion(NSDictionary(), error as NSError?)
                               return
                           }

                           if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {
                               completion(NSDictionary(), NSError(domain: "TWILIO", code: 1000, userInfo: [NSLocalizedDescriptionKey: "Incorrect return code for token request."]))
                               return
                           }

                           do {
                               let json = try JSONSerialization.jsonObject(with: data, options: []) as! [String:Any]
                               print("json response = \(json)")
                               completion(json as NSDictionary, error as NSError?)
                           } catch let error as NSError {
                               completion(NSDictionary(), error)
                           }
                       }
                       task.resume()
        }
        else {
            let userInfo = [NSLocalizedDescriptionKey : "TokenRequestUrl Key is missing"]
            let error = NSError(domain: "app", code: 404, userInfo: userInfo)

            completion(NSDictionary(), error)
        }
    }

Ответ, который я получаю из кода, выглядит следующим образом:

json response = ["errors": <__NSSingleObjectArrayI 0x600003faebf0>(
The property id field is required.
)
]

В чем проблема с кодом? Почему ответ не получается так же, как почтальон?

...