我不知道如何在下面的代码中解析。有没有人
func callService(usr: String, pwdCode: String) {
let url = NSURL(string: "http://inspect.dev.cbre.eu/SyncServices/api/jobmanagement/PlusContactAuthenticationPost")
var xmlParse:NSString = ""
var data : NSData!
let request = NSMutableURLRequest(URL: url!)
request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
request.HTTPMethod = "POST"
let dictionary = ["email": usr, "userPwd": pwdCode]
var error: NSError?
if let body = NSJSONSerialization.dataWithJSONObject(dictionary, options: nil, error: &error) {
request.HTTPBody = body
} else {
println("JSON error: \(error)")
}
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
(data, response, error) in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
// xmlParse=NSString(data: data, encoding: NSUTF8StringEncoding)!
// let data = (xmlParse as NSString).dataUsingEncoding(NSUTF8StringEncoding)
// NSXMLParser(data : NSData)
// xmlParse=NSString(data: data, encoding: NSUTF8StringEncoding)!
// xmlParse=response
// println(xmlParse)
}
task.resume()
}发布于 2014-11-24 20:27:52
您应该在请求的完成处理程序中使用NSXMLParser:
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
(data, response, error) in
if data == nil {
println("dataTaskWithRequest error: \(error)")
return
}
let parser = NSXMLParser(data: data)
parser.delegate = self
parser.parse()
// you can now check the value of the `success` variable here
}
task.resume()
// but obviously don't try to use it here here显然,以上假设您已经(a)定义了符合NSXMLParserDelegate的视图控制器,并且(b)已经实现了NSXMLParserDelegate方法,例如:
var elementValue: String?
var success = false
func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [NSObject : AnyObject]) {
if elementName == "success" {
elementValue = String()
}
}
func parser(parser: NSXMLParser, foundCharacters string: String?) {
if elementValue != nil {
elementValue! += string
}
}
func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
if elementName == "success" {
if elementValue == "true" {
success = true
}
elementValue = nil
}
}
func parser(parser: NSXMLParser, parseErrorOccurred parseError: NSError) {
println("parseErrorOccurred: \(parseError)")
}发布于 2015-07-31 12:57:49
对于任何还在寻找的人,下面是我使用的代码,它很好地将xml响应转换为字典/数组,这要归功于SWXMLHash类……
更新了SWIFT 2.0
let baseUrl = "http://www.example.com/file.xml"
let request = NSMutableURLRequest(URL: NSURL(string: baseUrl)!)
let session = NSURLSession.sharedSession()
request.HTTPMethod = "GET"
var err: NSError?
let task = session.dataTaskWithRequest(request) {
(data, response, error) in
if data == nil {
print("dataTaskWithRequest error: \(error)")
return
}
let xml = SWXMLHash.parse(data)
if let definition = xml["entry_list"]["entry"][0]["def"].element?.text {
// ...
}
dispatch_async(dispatch_get_main_queue(),{
// use main thread for UI updates
})
}
task.resume()发布于 2016-07-07 18:54:32
我使用下面创建的类从XML数据中获取字典。
https://github.com/Bhaavik/BDXmlParser
您需要添加该类,并只需调用下面的函数即可获得字典响应
let objXmlParser = BbXmlParser()
let dictResponse = objXmlParser.getdictionaryFromXmlData(data!)
print(dictResponse)这是你的字典。:)
https://stackoverflow.com/questions/27086989
复制相似问题