Alamofire 4.0,Swift 3 Post params没有通过

Mar*_*ark 6 alamofire swift3 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
            }
Run Code Online (Sandbox Code Playgroud)

小智 18

我遇到了类似的问题,我将编码从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)")
    }
}
Run Code Online (Sandbox Code Playgroud)


Ros*_*oss 7

我有同样的问题,并最终修复它.URLEncoding.httpBody对我不起作用......但URLEncoding.default确实如此.

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

它现在将参数传递给后端.

Alamofire.request(loginURL, method: .post, parameters: params, encoding: URLEncoding.default, headers: nil)
Run Code Online (Sandbox Code Playgroud)


cno*_*oon 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)
}
Run Code Online (Sandbox Code Playgroud)

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