Swift 如何使用JSON序列化对象将其转换为POST调用

Swift 如何使用JSON序列化对象将其转换为POST调用,swift,swift3,http-post,Swift,Swift3,Http Post,我试过阿拉莫菲尔,我全心全意地试过。这对我来说根本不管用。我终于让http开始工作了,但我需要让http POST工作。我们的PostAPI采用了一个包含所有必要数据的请求对象。我已经要求后端开发人员向我提供一个没有嵌入对象/数组的键值对JSON,以便我可以在swift代码中使用字典将其转换为JSON并发送请求。我现在只需要将下面的代码转换为POST 我之前的问题没有多大帮助。 我已经放弃了阿拉莫菲尔。我想使用基础类。简单的基本生活方式: func callWebService(url :

我试过阿拉莫菲尔,我全心全意地试过。这对我来说根本不管用。我终于让http开始工作了,但我需要让http POST工作。我们的PostAPI采用了一个包含所有必要数据的请求对象。我已经要求后端开发人员向我提供一个没有嵌入对象/数组的键值对JSON,以便我可以在swift代码中使用字典将其转换为JSON并发送请求。我现在只需要将下面的代码转换为POST

我之前的问题没有多大帮助。

我已经放弃了阿拉莫菲尔。我想使用基础类。简单的基本生活方式:

 func callWebService(url : String) {
        // Show MBProgressHUD Here
        var config                              :URLSessionConfiguration!
        var urlSession                          :URLSession!

        config = URLSessionConfiguration.default
        urlSession = URLSession(configuration: config)

        // MARK:- HeaderField
        let HTTPHeaderField_ContentType         = "Content-Type"

        // MARK:- ContentType
        let ContentType_ApplicationJson         = "application/json"

        //MARK: HTTPMethod
        let HTTPMethod_Get                      = "GET"

        let callURL = URL.init(string: url)

        var request = URLRequest.init(url: callURL!)

        request.timeoutInterval = 60.0 // TimeoutInterval in Second
        request.cachePolicy = URLRequest.CachePolicy.reloadIgnoringLocalCacheData
        request.addValue(ContentType_ApplicationJson, forHTTPHeaderField: HTTPHeaderField_ContentType)
        request.httpMethod = HTTPMethod_Get

        let dataTask = urlSession.dataTask(with: request) { (data,response,error) in
            if error != nil{
                print("Error **")

                return
            }
            do {
                let resultJson = try JSONSerialization.jsonObject(with: data!, options: []) as? [String:AnyObject]
                print("Result",resultJson!)
            } catch {
                print("Error -> \(error)")
            }
        }

        dataTask.resume()
        print("..In Background..")
    }

只需将JSON字符串和API URL传递给此函数。完整的邮政编码

func POST(api:String,jsonString:String,completionHandler:@escaping (_ success:Bool,_ response:String?,_ httpResponseStatusCode:Int?) -> Void)  {

    let url = URL(string: api)

    var request: URLRequest = URLRequest(url: url!)

    request.httpMethod = "POST"

    request.setValue("application/json", forHTTPHeaderField:"Content-Type")
    request.timeoutInterval = 60.0

    //additional headers
    if let token = Helper.readAccessToken() {
        request.setValue("\(token)", forHTTPHeaderField: "Authorization")
    }

    let jsonData = jsonString.data(using: String.Encoding.utf8, allowLossyConversion: true)
    request.httpBody = jsonData

    let task = URLSession.shared.dataTask(with: request) {
        (data: Data?, response: URLResponse?, error: Error?) -> Void in

        var responseCode = 0
        if let httpResponse = response as? HTTPURLResponse {
            responseCode = httpResponse.statusCode
            print("responseCode \(httpResponse.statusCode)")
        }

        if error != nil {
            completionHandler(false, error?.localizedDescription,nil)

        } else {
            let responseString = String(data: data!, encoding: .utf8)
            completionHandler(true, responseString, responseCode)
        }
    }

    task.resume()
}

我有点困惑你要求重写代码来发送POST请求?请自己尝试一下,如果它不起作用,请寻求帮助。相信我,当我这么说的时候,我已经尝试过了,但失败了。我终于有了一份工作,但无法得到一份工作。