这是我对我的api的请求
这是我的请求参数和api调用
var param = [String:Any]()
param["TokenID"] = tokenId
param["RID"] = Rid
param["FromDate"] = DateUtilities.convertStringfromDate(date: DateUtilities.getDateofMonthStartOfLast2Month())
param["ToDate"] = DateUtilities.convertStringfromDate(date: Date())
print(param)
// Network request
Alamofire.request(finalURL, method: .post, parameters: param, encoding: URLEncoding.queryString, headers: headers).responseJSON { (response: DataResponse<Any>) in
// check result is success
guard response.result.isSuccess else {
failure((response.result.error?.localizedDescription)!,"100")
return
}
if let arrResponse = response.result.value as? [[String: Any]]{
// get status code
if arrResponse[0]["Status"] as? String ?? "" == "Error"{
let statusCode = arrResponse[0][Constants.ResponseKey.code] as? String ?? "0"
if statusCode == "8"{
//Call logout api
ApplicationData.sharedInstance.logoutUser()
return
}
// get status message
let message = arrResponse[0][Constants.ResponseKey.message] as? String ?? ""
failure(message,statusCode)
return
}
success(arrResponse, "")
return
}
}
但是由于序列不匹配,我没有得到期望的响应,我在api响应中遇到了错误。在这里,我认为这是alamofire的问题,它需要将参数排序到查询字符串中。如何避免在请求中排序?
请帮助我。
答案 0 :(得分:0)
显然,这是Alamofire上的已解决问题,请遵循此link。
不幸的是,斯威夫特的字典没有顺序保存,所以有 目前无法完成此操作。
Alamofire当前以字母顺序对URL参数进行编码,但是 没有办法在字典中保留任意顺序。所以 除非想要的命令是某种某种或任意的 字典的顺序。