如何使用返回的获取字符串编写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/