发送通过HTTP POST方法字典数据斯威夫特
问题描述:
我试图与在字典中设置PARAMS HTTP POST请求这里是我的字典发送通过HTTP POST方法字典数据斯威夫特
let parameters = [
["name": "tag","value": "login"],
["name": "email","value": "[email protected]"],
["name": "password","value": "aaaa"]
]
,但我不知道如何访问它她是我的完整请求功能
func data_request(_ url:String)
{
let parameter = [
["name": "tag","value": "login"],
["name": "email","value": "[email protected]"],
["name": "password","value": "aaaa"]
]
let url:NSURL = NSURL(string: url)!
let session = URLSession.shared
let request = NSMutableURLRequest(url: url as URL)
request.httpMethod = "POST"
let paramString = parameter?
request.httpBody = paramString.data(using: String.Encoding.utf8)
let task = session.dataTask(with: request as URLRequest) {
(
data, response, error) in
guard let _:NSData = data as NSData?, let _:URLResponse = response, error == nil else {
print("error")
return
}
if let dataString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
{
print(dataString)
}
}
task.resume()
}
答
需要转换字典JSON字符串象下面这样:
let jsonData = try JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted)
After that pass to the http.Body
// insert json data to the request
request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
request.HTTPBody = jsonData
let task = NSURLSession.sharedSession().dataTaskWithRequest(request){ data, response, error in
if error != nil{
print("Error -> \(error)")
return
}
do {
let result = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [String:AnyObject]
print("Result -> \(result)")
} catch {
print("Error -> \(error)")
}
}
task.resume()
return task
} catch {
print(error)
}
答
您需要合作nvert的Dictionary
到Data
并将其设置为httpBody
你可以用这种方式
let paramData = try? JSONSerialization.data(withJSONObject: parameter, options: []) request.httpBody = paramData
有什么错误解决?另外,尝试添加发送参数JSON结构。 –
错误是我不知道如何设置http身体 –
让paramString =参数?在这一行 –