web-dev-qa-db-fra.com

Alamofire 4.0, paramètres de Swift 3 Post non validés

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
            }
6
Mark

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)")
    }
}
17
Steven Roseman

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)
7
Ross

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é. ????

1
cnoon