【问题标题】:Alamofire URLRequestConvertible not able to escape "/" in encodingAlamofire URLRequestConvertible 无法在编码中转义“/”
【发布时间】:2023-04-05 10:34:01
【问题描述】:

我正在为 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
    }()

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

谢谢

【问题讨论】:

    标签: ios swift alamofire nsurlsession url-encoding


    【解决方案1】:

    据我了解,您只需要转义NameToPass/23?那就试试吧

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

    【讨论】:

    • 请查看我的更新答案。由于 alamofire 编码两倍的“/”
    猜你喜欢
    • 1970-01-01
    • 2015-04-04
    • 2017-02-22
    • 2021-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    相关资源
    最近更新 更多