如何添加Alamofire URL参数

Chr*_* G. 26 swift alamofire

我有一个使用Postman传递URL参数的工作场景.现在,当我尝试通过Swift中的Alamofire进行此操作时,它不起作用.

你会如何在Alamofire中创建这个网址? HTTP://本地主机:8080 /测试= 123

    _url = "http://localhost:8080/"
    let parameters: Parameters = [
        "test": "123"
        ]

    Alamofire.request(_url,
                      method: .post,
                      parameters: parameters,
                      encoding: URLEncoding.default,
                      headers: headers
Run Code Online (Sandbox Code Playgroud)

Ped*_*lho 78

问题是你正在使用URLEncoding.default.Alamofire URLEncoding.default根据method您使用的HTTP进行不同的解释.

对于GET,HEADDELETE请求,URLEncoding.default将参数编码为查询字符串并将其添加到URL,但对于任何其他方法(例如POST),参数将被编码为查询字符串并作为HTTP请求的主体发送.

要在POST请求中使用查询字符串,您需要将encoding参数更改为URLEncoding(destination: .queryString).

您可以在此处查看有关Alamofire如何处理请求参数的更多详细信息.

您的代码应如下所示:

   _url = "http://localhost:8080/"
    let parameters: Parameters = [
        "test": "123"
        ]

    Alamofire.request(_url,
                      method: .post,
                      parameters: parameters,
                      encoding: URLEncoding(destination: .queryString),
                      headers: headers)
Run Code Online (Sandbox Code Playgroud)


And*_*dré 17

如果您希望在querystring中使用您的参数,请使用.queryString作为URLEncoding,如:(我假设您在某处有标题)

let _url = "http://localhost:8080/"
let parameters: Parameters = [
    "test": "123"
    ]

Alamofire.request(_url,
        method: .post,
        parameters: parameters,
        encoding: URLEncoding.queryString,
        headers: headers)
Run Code Online (Sandbox Code Playgroud)

这个表格是由Alamofire作者提出的,因为它更符合另一个,见截图: 摘自网站

在这里看原文