I'm stuck in a weird problem. I try to parse an XML-File from a non-HTTPS Webserver for the Apple Watch. Its working great with WatchKit 2.0 and iOS 9.1 in the Xcode Simulator, as soon as try to build it on my Watch, its not working anymore...
I also have set the ATS as followed in all Info.plist files:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
While debugging I found the following error:
[0] (null) "NSXMLParserErrorMessage" : "Could not open data stream"
import Foundation
import WatchKit
class parkingXMLParser : NSObject, NSXMLParserDelegate{
var parser = NSXMLParser()
var elements = NSMutableDictionary()
var element = NSString()
let menuXMLURL = "http://ta-app.hslu.ch/parkplatz/HSLUHorw.xml"
var parkingCounterFree = NSMutableString()
var parkingCounterTimestamp = NSMutableString()
func beginParsing()
{
parser = NSXMLParser(contentsOfURL:(NSURL(string:menuXMLURL))!)!
parser.delegate = self
}
func parse() -> Bool {
return parser.parse()
}
func getParkingCounterFree() -> String {
return parkingCounterFree as String;
}
func getParkingCounterFreeTimestamp() -> String {
return parkingCounterTimestamp as String;
}
func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String])
{
element = elementName
if (elementName as NSString).isEqualToString("ph")
{
elements = NSMutableDictionary()
elements = [:]
}
}
func parser(parser: NSXMLParser, foundCharacters string: String)
{
if element.isEqualToString("frei") {
parkingCounterFree.appendString(string)
}
else if element.isEqualToString("zeitpunkt") {
parkingCounterTimestamp.appendString(string)
}
}
func parser(parser: NSXMLParser, parseErrorOccurred parseError: NSError) {
NSLog("failure error: %@", parseError)
}
}
来源:https://stackoverflow.com/questions/33385406/nsxmlparsererrormessage-could-not-open-data-stream