I have a working scenario using Postman passing in URL parameters. Now when I try to do it via Alamofire in Swift, it does not work.
How would you create this url in 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
The problem is that you're using URLEncoding.default
. Alamofire interprets URLEncoding.default
differently depending on the HTTP method
you're using.
For GET
, HEAD
, and DELETE
requests, URLEncoding.default
encodes the parameters as a query string and adds it to the URL, but for any other method (such as POST
) the parameters get encoded as a query string and sent as the body of the HTTP request.
In order to use a query string in a POST
request, you need to change your encoding
argument to URLEncoding(destination: .queryString)
.
You can see more details about how Alamofire handles request parameters here.
Your code should look like:
_url = "http://localhost:8080/"
let parameters: Parameters = [
"test": "123"
]
Alamofire.request(_url,
method: .post,
parameters: parameters,
encoding: URLEncoding(destination: .queryString),
headers: headers)