dha*_*hah 12 xml nsxmlparser swift
我不知道如何解析我的下面的代码..可以有人
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()
}
Run Code Online (Sandbox Code Playgroud)
对于任何仍在寻找的人,这里是我使用的代码,它很好地将xml响应转换为Dictionaries/Arrays,这要归功于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()
Run Code Online (Sandbox Code Playgroud)
您应该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
Run Code Online (Sandbox Code Playgroud)
显然,上面假设你已经(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)")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16896 次 |
| 最近记录: |