Lors de la mise à niveau vers la dernière version (Alamo 4, Swift 3 et XC 8), les paramètres suivants ont été arrêtés et je ne sais pas pourquoi ...
let params = ["stripeToken": token.tokenId,
"name": name,
"email": email
]
Alamofire.request(requestString, method: .post, parameters: params, encoding: JSONEncoding.default)
.responseJSON { (response) in
if response.result.value is NSNull {
return
}
J'ai eu un problème similaire, j'ai changé l'encodage de JSONEncoding.default à URLEncoding.httpbody ou à l'encodage: URLEncoding.default.
Alamofire.request(URL, method: .post, parameters: params, encoding: URLEncoding.httpBody).responseJSON { response in
if let data = response.data {
let json = String(data: data, encoding: String.Encoding.utf8)
print("Response: \(json)")
}
}
J'ai le même problème et finalement résolu. URLEncoding.httpBody n'a pas fonctionné pour moi ... mais URLEncoding.default l'a fait.
J'ai donc changé JSONEncoding.default en URLEncoding.default .
Il passe maintenant les paramètres au backend.
Alamofire.request(loginURL, method: .post, parameters: params, encoding: URLEncoding.default, headers: nil)
Tout fonctionne exactement comme il se doit. Voici un exemple rapide démontrant ce fait.
func testPostingJSON() {
let urlString = "https://httpbin.org/post"
let params: Parameters = [
"stripeToken": "token_id",
"name": "cnoon",
"email": "[email protected]"
]
let expectation = self.expectation(description: "should work")
Alamofire.request(urlString, method: .post, parameters: params, encoding: JSONEncoding.default)
.responseJSON { response in
if let json = response.result.value {
print("JSON: \(json)")
} else {
print("Did not receive json")
}
expectation.fulfill()
}
waitForExpectations(timeout: 5.0, handler: nil)
}
J'espère que cet exemple vous aidera à cerner le problème. À votre santé. ????