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.
)
]
В чем проблема с кодом? Почему ответ не получается так же, как почтальон?