Swift 2中的HTTPS Post - 使用NSURLSession/NSMutableURLRequest

cak*_*s88 1 xml rest post xcode7 swift2

使用swift 2,新的语言.我的目标是向API发送一个简单的post请求,然后解析响应.我没有找到一个明确的方法来做到这一点,我所做的任何尝试都失败了.这是我有的:

func restURL() {
        let xmlStr: String? = "<webservices><WebService type='test'><WSName>test</WSName><select>select * from receipts where id = '1234'</select></WebService></webservices>"
        let session = NSURLSession.sharedSession()
        let url = NSURL(string: "https://apiwebaddress.com/post" as String)!
        let request = NSMutableURLRequest(URL: url)
        let post:NSString = xmlStr!
        let postData:NSData = post.dataUsingEncoding(NSUTF8StringEncoding)!
        request.HTTPMethod = "POST"
        request.HTTPBody = postData
        request.setValue("0", forHTTPHeaderField: "Content-Length")
        request.setValue("application/xml", forHTTPHeaderField: "Content-Type")
        request.setValue("gzip,deflate", forHTTPHeaderField: "Accept-Encoding")
        request.setValue("Keep-Alive", forHTTPHeaderField: "Connection")
Run Code Online (Sandbox Code Playgroud)

我相信我把它设置正确,我想发送它然后在响应的主体中获取xml,但我不知道从这里去哪里.我读过的所有内容都被弃用或混淆.有人可以用简单的术语解释如何实现我的目标吗?提前致谢

Pro*_*ver 5

以下是根据我的研究我使用NSURLSession执行请求的剪辑.我添加了一些注释以使代码更具可读性:)

 func restURL() {

        {
             let xmlStr: String? = "<webservices><WebService type='test'><WSName>test</WSName><select>select * from receipts where id = '1234'</select></WebService></webservices>"
            var request = NSMutableURLRequest(URL: NSURL(string: url))
            var session = NSURLSession.sharedSession()
            request.HTTPMethod = "POST"
            let post:NSString = xmlStr!
            let postData:NSData = post.dataUsingEncoding(NSUTF8StringEncoding)!
            request.HTTPBody = postData
            request.addValue("application/xml", forHTTPHeaderField: "Content-Type")
            request.addValue("gzip,deflate", forHTTPHeaderField: "Accept-Encoding")
            request.addValue("Keep-Alive", forHTTPHeaderField: "Connection")

            var task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
                println("Response: \(response)")
                var strData = NSString(data: data, encoding: NSUTF8StringEncoding)
                println("Body: \(strData)")

                /*Parse data here */
              // Here an example how it can be done in case of json response:
                var err: NSError?
                var json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error: &err) as? NSDictionary


            }) // var task

            task.resume()

        } // End restURL
Run Code Online (Sandbox Code Playgroud)