如何使用返回的获取字符串编写post方法

func post(link:String,passedPostString:String) {
    let request = NSMutableURLRequest(url: NSURL(string: link)! as URL)
    request.httpMethod = "POST"


    request.httpBody = passedPostString.data(using: String.Encoding.utf8)

    let task = URLSession.shared.dataTask(with: request as URLRequest) {
        data, response, error in

        if error != nil {
            print("error=\(String(describing: error))")
            print("******Error*****")
            return

        }
        let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)

      print(responseString!)




    }
    task.resume()
}

然后我称之为
var link  = "link"
var passedPostString = "passedPostString"
print(post(link: link , passedPostString: passedPostString ))

它将返回获取的值

最佳答案

进行异步网络调用的函数不能具有返回类型,因为在完成之前可能需要一段时间。你不会希望你的系统冻结并等待响应,这会超出目的。
相反,您可以添加带有完成闭包的新参数,该闭包将在请求完成时调用,如下所示:

func post(link:String,passedPostString:String, completion: @escaping (String?, Error?) -> Void) {
    let request = NSMutableURLRequest(url: NSURL(string: link)! as URL)
    request.httpMethod = "POST"

    request.httpBody = passedPostString.data(using: String.Encoding.utf8)

    let task = URLSession.shared.dataTask(with: request as URLRequest) {
        data, response, error in

        // Make sure there is no error, else..
        guard error == nil else {
            completion(nil, error)
            return
        }
        let responseString = String(data: data!, encoding: String.Encoding.utf8)

        completion(responseString, nil)

    }
    task.resume()
}

关于ios - 带返回字符串的iOS Swift Post方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45060905/

10-14 22:34
查看更多