Alamofire post 请求:

Alamofire post request:

你好 我在 swift 中阅读了很多关于 alamofire post 请求的问题和答案,但无法得到我真正想要的答案我真正想要的是: Post 使用 URLRequest 和 URLSession 的请求我必须在 URLRequest 中分配一个 HTTPBody 这个主体可以是一个符合 encodable 或 codable 的结构的实例但是在 alamofire post 请求如何发送数据? 将要发送的数据放在哪里? 谢谢,不要将其标记为重复我已经阅读了很多 posts 但没有找到答案。

Alamofire 有很好的文档 here。这说明了关于传递可编码参数的全部内容。这是一个例子:

AF.request("myRequestUrl", method: .post, parameters: encodableModel).responseString { print([=10=]) }

使用Alamofire实现请求的方式有很多种,这里举一个简单的例子:

首先,您是否必须根据 API 和 headers 创建参数 URL:

let parameters = [
    "username": "foo",
    "password": "123456"
]

let url = "https://httpbin.org/post"

static private var headers: HTTPHeaders {
        get {
            return [
               "Authorization" : "Bearer \(Session.current.bearerToken ?? "")"
            ]
        }
    }

因此您从 Alamofire 调用该函数并传递您的数据:

Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: headers).responseJSON {
            response in
            switch (response.result) {
            case .success:
                print(response)
                break
            case .failure:
                print(Error.self)
            }
        }
}

:)

// Create url request
// Get your instance of codable struct model

do {
    let encoder = JSONEncoder()
    let data = try encoder.encode(yourCodableObject)
    your_urlRequest.httpBody = data
} catch {

}
    let apiEndpoint: String = "https://xyz"
    let headers = ["Content-Type" : "application/json","Variable":"ABC"
    var param = [String: Any?]()
    param["Command"] = "ResetPin"
    var cellNo = MobileNumberField.text
    param["Data"] = jsonToString(json: ["CELLNO":"cellNo"])
    AF.request(URL(string: apiEndpoint)!, method: .post, parameters: param as Parameters, encoding: JSONEncoding.default, headers: nil).responseJSON { (response) in

        switch response.result {
        case .success(let value):
            if let json = value as? [String: Any] {

                let data = JSON(json)

                if data["Status"].stringValue == "0" {
                    let alert = UIAlertController(title: "Error", message: data["Message"].stringValue, preferredStyle: .alert)
                    alert.addAction(UIAlertAction(title: "Ok", style: .destructive) { _ in
                        return
                    })
                    self.present(alert, animated: true)
                }
                else {
                    let jsonStr = data["Data"]

                    let dict = convertToDictionary(text: jsonStr!)

                    if let dictMain = dict {
                        if (JSON(dictMain)["ISADMIN"].stringValue == "YES"){
                            //Is Admin
                            self.performSegue(withIdentifier:"AdminFoundSegue", sender: self)
                        } else {
                            //Is not Admin
                            self.performSegue(withIdentifier:"ConnectYourAccountSegue", sender: self)
                        }
                    }
                }
            }
        case .failure(let error):
            print(error)
            let alert = UIAlertController(title: "Error", message: error.localizedDescription, preferredStyle: .alert)
            alert.addAction(UIAlertAction(title: "Ok", style: .destructive) { _ in
                return
            })
            self.present(alert, animated: true)
        }
    }