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
If you want your parameters to be used in querystring, use .queryString as URLEncoding, as in: (I assume you have headers somewhere)
let _url = "http://localhost:8080/"
let parameters: Parameters = [
"test": "123"
]
Alamofire.request(_url,
method: .post,
parameters: parameters,
encoding: URLEncoding.queryString,
headers: headers)
This form is suggested by Alamofire author because it's more coincise to the other, see screenshot:
See original here
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)