我正在尝试解析来自 php 的信息,但我需要发送一个字典参数,所以我尝试了一些事情......我看到了教程,示例,但我陷入困境,所以我回到了开始:(这是什么好方法这样做吗?)
func asd(){
let urlPath = "http://xxxxx.php"
let url: NSURL = NSURL(string: urlPath)
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "GET"
var parm = ["id_xxxx": "900"] as Dictionary
//I THINK MY PROBLEM IT'S HERE! i dont know how to link parm with session, i try is with session.uploadTaskWithRequest(<#request: NSURLRequest?#>, fromData: <#NSData?#>) but doesn't work
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithURL(url, completionHandler: {data, response, error -> Void in
println("Task completed")
if(error) {
// If there is an error in the web request, print it to the console
println(error.localizedDescription)
}
var err: NSError?
var jsonResult = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: &err) as NSDictionary
if(err?) {
// If there is an error parsing JSON, print it to the console
println("JSON Error \(err!.localizedDescription)")
}
println(jsonResult.debugDescription)
let results: NSArray = jsonResult["x"] as NSArray
dispatch_async(dispatch_get_main_queue(), {
self.tableData = results
self.OfertaGridViewLista!.reloadData()
})
})
task.resume()
}
Thanks!
GET 数据需要是 url 查询字符串的一部分。某些方法将接受 POST/PUT 请求的参数字典,但如果您使用 GET 方法,这些方法不会将字典添加到 url 中。
如果您希望将 GET 参数保留在字典中以保持整洁或一致性,请考虑向您的项目添加如下方法:
func buildQueryString(fromDictionary parameters: [String:String]) -> String {
var urlVars:[String] = []
for (k, value) in parameters {
let value = value as NSString
if let encodedValue = value.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed) {
urlVars.append(k + "=" + encodedValue)
}
}
return urlVars.isEmpty ? "" : "?" + urlVars.joined(separator: "&")
}
此方法将采用键/值对的字典并返回一个可以附加到 url 的字符串。
例如,如果您的 API 请求允许多种请求方法(GET/POST/等),您只需将此查询字符串附加到 GET 请求的基本 api url 中:
if (request.HTTPMethod == "GET") {
urlPath += buildQueryString(fromDictionary: parm)
}
如果您仅发出 GET 请求,则无需检查将使用哪种方法来发送数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)