Swift - 从Alamofire POST请求获取数据
问题描述:
我被困在Swift项目中。我从按钮IBAction调用“SendPost”,我需要它从Alamofire.request返回数据,但我不知道如何达到这个目的。我无法从Alamofire.request获取“utf8Text”变量。我怎样才能获得数据?Swift - 从Alamofire POST请求获取数据
谢谢。 :)
import Foundation
import Alamofire
func SendPost(parameters: Parameters) -> String {
Alamofire.request("https://hovnocuc.com/main.php", method: .post, parameters: parameters).response { response in
print("Request: \(response.request)")
print("Response: \(response.response)")
print("Error: \(response.error)")
if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
print("Data: \(utf8Text)")
}
}
return "I don't know. :(";
}
答
与下面的代码尝试
func SendPost(parameters: Parameters) -> [String,AnyObject] {
let urlstring= "https://hovnocuc.com/main.php"
Alamofire.request(.POST, urlstring, parameters: parameters, encoding: .JSON).responseJSON { response in
if let JSON = response.result.value {
print("JSON: \(JSON)")
return JSON
}
}
return "I don't know "
}
答
对于斯威夫特3
使用完毕返回去从请求获得的数据:
首先创建一个typealias
其将用作封口:
typealias SendPostCompletion = (_ data: String) -> Void
然后:
@IBAction func yourAction(_ sender: UIButton) {
SendPost(parameters: ...) { (data) in
print(data)
}
}
func SendPost(parameters: Parameters, completion: @escaping SendPostCompletion) -> String {
Alamofire.request("https://hovnocuc.com/main.php", method: .post, parameters: parameters).response { response in
print("Request: \(response.request)")
print("Response: \(response.response)")
print("Error: \(response.error)")
if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
var data = ("Data: \(utf8Text)")
completion(data)
}
}
completion("I don't know. :(")
}
希望它可以帮助你!
你在if let行有一个流氓支架。删除它,然后再试一次 – Blaze349