Search code examples
swiftpostalamofire

Json key/value incorrectly formatted


Trying to login to a web service as such:

let parameters: Parameters = [
            "Password":password,
            "Username":username
        ]

        var headers:HTTPHeaders = commonHeaders()
        headers["Content-Type"] = "application/json;charset=UTF-8"

        Alamofire.request(url!, method:.post, parameters:parameters, headers:headers).responseJSON { response in

        ....

        }

Somehow, my parameters end up on the server side as

"Username=xxx&Password=yyy"

where

{"Username":"xxx","Password":"yyy"}

is expected

This must be something simple, but I hope you can help me


Solution

  • Add the type of encoding you want your parameters to be in your request, Default is .URLEncoding. So, your parameters are going like "Username=xxx&Password=yyy"(appended into url)

    Add the parameter json encoding to your request:

    Alamofire.request(url!, method:.post, parameters:parameters, headers:headers, encoding: JSONEncoding.default)