我有一个使用邮递员传递URL参数的工作方案。现在,当我尝试通过Swift中的Alamofire进行操作时,它不起作用。
您如何在Alamofire中创建此网址? http:// localhost:8080 /?test = 123
_url = "http://localhost:8080/" let parameters: Parameters = [ "test": "123" ] Alamofire.request(_url, method: .post, parameters: parameters, encoding: URLEncoding.default, headers: headers
问题是您正在使用URLEncoding.default。Alamofire会URLEncoding.default根据method您所使用的HTTP进行不同的解释。
URLEncoding.default
method
对于GET,HEAD和DELETE请求,URLEncoding.default将参数编码为查询字符串并将其添加到URL,但是对于任何其他方法(例如POST),参数将被编码为查询字符串并作为HTTP请求的正文发送。
GET
HEAD
DELETE
POST
为了在POST请求中使用查询字符串,您需要将encoding参数更改为URLEncoding(destination: .queryString)。
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)