所以我尝试从我的 iOS 设备向我的服务器发出异步 POST 请求。
这是我编写的 Swift 代码:
var urlString = "https://eamorr.com/ajax/login.php"
var url = NSURL(string: urlString)
var request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
var params = ["uname":"Eamorr", "pword":"mySecret"] as Dictionary<String, String>
request.HTTPBody = params. //what to do here???
var connection = NSURLConnection(request: request, delegate: self, startImmediately: true)
问题是,如何(可靠地)将参数转换为 POST 字符串? (我的服务器需要普通的旧 POST 参数...没什么花哨的 - 没有 JSON 等)
我需要它非常可靠(即不是黑客),所以我更希望有一些我可以使用的基类(由Apple编写)。
有人有什么想法吗?
最佳答案
bbarnhart 建议的一些内容,但要实际创建正文数据,请使用:
let body = "&".join(map(params, {
let key = $0.0.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
let value = $0.1.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
return "\(key!)=\(value!)"
}))
request.HTTPBody = body.dataUsingEncoding(NSUTF8StringEncoding)
基本上将每个项目转义并转换为“key=value”,然后将它们全部串在一起并用“&”分隔
您还(可能)需要按照 bbarnhart 的建议设置 Content-Type header :
request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
关于ios - 将 NSDictionary 转换为 POST 字符串时卡住了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28409781/