Alamofire URLRequestConvertible无法在编码中转义“ /”

时间:2018-07-24 13:04:18

标签: ios swift alamofire nsurlsession url-encoding

我正在为Alamofire使用URLRequestConvertible。

我有一个GET请求,因为我的URL有一个“ /”,需要转义。

请参见下面的示例,其中“ NameToPass / 23”现在带有“ /”。

当我使用URLEncoding.default时,“ /”未编码,但是服务器期望它使用%2F

进行编码

但是可以说,如果我在创建相对路径时对其进行了编码

"NameToPass/23".addingPercentEncoding(withAllowedCharacters: CharacterSet.alphanumerics) 

Alamofire将其编码两次,并将其命名为“ NameToPass%252F23”

下面是相同的示例代码。

    let encoding: ParameterEncoding = {
        switch self {
        case . getItemDetails:
            return URLEncoding.default
         }
    }()



  let url: URL = {
        let relativePath: String?
        switch self {

        case .getItemDetails(let listName):

                relativePath = "/mainAction/" + "NameToPass/23" 


          var url = URL(string: BaseURL)!

        if let relativePath = relativePath { url = url.appendingPathComponent(relativePath) }
        return url
    }()

任何正确方向的提示都将受到高度赞赏。

谢谢

1 个答案:

答案 0 :(得分:1)

据我了解,您只需要逃脱NameToPass/23吗?然后尝试

relativePath = "/mainAction/" + "NameToPass/23".addingPercentEncoding(withAllowedCharacters: CharacterSet.alphanumerics)