Alamofire 4.0,Swift 3 Post params没有通过

时间:2016-10-01 01:03:52

标签: swift3 alamofire xcode8

当我升级到最新的一切(Alamo 4,Swift 3和XC 8)时,以下停止发布参数,我不知道为什么......

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
            }

3 个答案:

答案 0 :(得分:17)

我有类似的问题,我将编码从JSONEncoding.default改为URLEncoding.httpbody或编码: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)")
    }
}

答案 1 :(得分:7)

我有同样的问题并最终解决了。 URLEncoding.httpBody对我不起作用......但是URLEncoding.default没有。

所以我将 JSONEncoding.default 更改为 URLEncoding.default

现在将参数传递给后端。

Alamofire.request(loginURL, method: .post, parameters: params, encoding: URLEncoding.default, headers: nil)

答案 2 :(得分:1)

一切都完全正常。这是一个证明这一事实的简单例子。

func testPostingJSON() {
    let urlString = "https://httpbin.org/post"

    let params: Parameters = [
        "stripeToken": "token_id",
        "name": "cnoon",
        "email": "cnoon@alamofire.org"
    ]

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

希望这个例子可以帮助您查明问题。干杯。