不想按排序顺序对参数进行排序alamofire

时间:2018-10-25 13:41:09

标签: ios swift sorting request alamofire

这是我对我的api的请求

http://xxxxxxxxxxxxxx/Service/GetEntry.aspx?FromDate=01/08/2018&RID=1&ToDate=25/10/2018&TokenID=1e731b96-4261-453b-848c-5b1a0d44f808

但是我最初的要求是 http://xxxxxxxxxxxxx/Service1/GetEntry.aspx?TokenID=5edc678f-82ee-4cf8-956e-5f1d3798dfec&RID=1&FromDate=01%2F08%2F2018&ToDate=25%2F10%2F2018

这是我的请求参数和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的问题,它需要将参数排序到查询字符串中。如何避免在请求中排序?

请帮助我。

1 个答案:

答案 0 :(得分:0)

显然,这是Alamofire上的已解决问题,请遵循此link

  

不幸的是,斯威夫特的字典没有顺序保存,所以有   目前无法完成此操作。

     

Alamofire当前以字母顺序对URL参数进行编码,但是   没有办法在字典中保留任意顺序。所以   除非想要的命令是某种某种或任意的   字典的顺序。