gpt4 book ai didi

Swift + Alamofire - 验证并获取 XML 文件

转载 作者:可可西里 更新时间:2023-11-01 02:16:58 25 4
gpt4 key购买 nike

我有一个受用户名和密码保护的网站。我需要获取 XML 文件然后解析它。我尝试了很多解决方案,但没有一个对我有用。我收到此代码。

Error: Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Encountered unknown tag tabless on line 1) UserInfo=0x1aadf300 {NSDebugDescription=Encountered unknown tag tabless on line 1, kCFPropertyListOldStyleParsingError=The operation couldn’t be completed. (Cocoa error 3840.)}

这是我的代码:

 func getTimeStampOfUpdatedTables(completionHandler: (Bool) -> ()) -> (){

let user = "abc"
let password = "abc"

let plainString = "\(user):\(password)" as NSString
let plainData = plainString.dataUsingEncoding(NSUTF8StringEncoding)
let base64String = plainData?.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))

Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders = ["Authorization": "Basic " + base64String!]

Alamofire.request(.GET, "http://example.com/info.php", encoding: ParameterEncoding.URL).responsePropertyList { response in
print(response.result)
if let error = response.result.error {
print("Error: \(error)")

// parsing the data to an array
} else if let array = response.result.value as? [[String: String]] {

if array.isEmpty {
print("No data")

} else {
//Do whatever you want to do with the array here
print("data here!")
}
}
}
}

最佳答案

出现该错误是因为您的 API 响应采用 XML 而不是属性列表格式。您正在从 Alamofire 请求属性列表,它无法找到 pList 格式,因此它给出了错误。我用 PList 测试了代码,它运行良好

这是属性列表格式

    <?xml version="1.0" encoding="UTF-8"?>

<plist version="1.0">
<dict>
<key>Tabless</key>
<dict>
<key>Tables</key>
<dict>
<key>test</key>
<string>test</string>

</dict>
<key>Tables - 2</key>
<dict>
<key>test</key>
<string>test</string>

</dict>
<key>Tables - 3</key>
<dict>
<key>test</key>
<string>test</string>

</dict>
<key>Tables - 4</key>
<dict>
<key>test</key>
<string>test</string>

</dict>
<key>Tables - 5</key>
<dict>
<key>test</key>
<string>test</string>

</dict>
<key>Tables - 6</key>
<dict>
<key>test</key>
<string>test</string>

</dict>
<key>Tables - 7</key>
<dict>
<key>test</key>
<string>test</string>

</dict>
<key>Tables - 8</key>
<dict>
<key>test</key>
<string>test</string>

</dict>
<key>Tables - 9</key>
<dict>
<key>test</key>
<string>test</string>

</dict>

I HAVE TESTED THE WHOLE THING

     let user = "abc"
let password = "abc"

let credentialData = "\(user):\(password)".dataUsingEncoding(NSUTF8StringEncoding)!
let base64Credentials = credentialData.base64EncodedStringWithOptions([])

let headers = ["Authorization": "Basic \(base64Credentials)"]
Alamofire.request(.GET, "http://192.168.0.100/r.php", headers: headers)
.responsePropertyList { response in

print(response.result)
if let error = response.result.error {
print("Error: \(error)")

// parsing the data to an array
} else if let array = response.result.value as? [[String: String]] {

if array.isEmpty {
print("No data")

} else {
//Do whatever you want to do with the array here
print("data here!")
}
}
}

对于解析 XML 数据,您可以考虑 SWXMLHash . Alamofire 请求可能如下所示:

Alamofire.request(.GET, url, parameters: parameters)
.response { (request, response, data, error) in
println(data) // if you want to check XML data in debug window.
var xml = SWXMLHash.parse(data!)
println(xml["tabless"][0]["TABLE_NAME"].element?.text)
}

关于Swift + Alamofire - 验证并获取 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37027030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com