2

My CURL is

curl --header "secret: mytoken" --data "a=addPost&session=mySession&postBody=test" https://example.com/testing/

I want to use it with Alamofire. How to convert it to Swift code?

Update.

My code is:

@IBAction func postTapped(_ sender: UIButton) {
    guard let url = URL(string: "https://example.com/testing/") else { return }

    let headers = [
        "secret": "mytoken"
    ]

    let parameters = [
        "a": "addPost",
        "session": "mySession",
        "postBody": "test"
    ]

    Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: headers).responseJSON { (response) in
        print(response)
    }
}

But I am getting this error:

FAILURE: responseSerializationFailed(reason: Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(error: Error Domain=NSCocoaErrorDomain Code=3840 "Invalid value around character 0." UserInfo={NSDebugDescription=Invalid value around character 0.}))

Update 2.

When I use this CURL in mac os terminal I got the correct JSON:

{"result":100,"data":{"id":"mydata"}

But in swift code I got error.

Helge Becker
  • 3,219
  • 1
  • 20
  • 33
Tkas
  • 302
  • 3
  • 14

2 Answers2

1
let parameters: Parameters = [
    "a": "addPost",
    "session": "mySession",
    "postBody": "test"
]

let headers: HTTPHeaders = [
    "secret": "mytoken"
]

Alamofire.request("https://example.com/testing/", parameters: parameters, headers: headers).responseJSON { response in
    // do something
}
shtnkgm
  • 1,396
  • 15
  • 17
1

Solution - use URLEncoding(destination: .httpBody)(thx Larme):

Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding(destination: .httpBody), headers: headers).responseJSON { (response) in
    print(response)
}
Tkas
  • 302
  • 3
  • 14