![](/img/trans.png)
[英]How to connect to a web service JSON with authentication in android?
[英]SWIFT 3 How to connect Json from my localhost web service
我想從本地主機連接數據,但出現錯誤“ json錯誤:由於格式不正確,無法讀取數據”。
這是代碼。
let session = URLSession.shared
var dataTask:URLSessionDataTask!
var webDomain = "http://192.xxx.xx.xx:80xx/WebServiceTest.asmx"
var url:URL!
var arrTable = [[String:AnyObject]]()
func getTableDataFromWeb(){
strURL = webDomain + "/SearchNonMemberByRangeLatitude=25.062047&Longitude=121.495241&Range=300"
url = URL(string: strURL)
let request = URLRequest(url: URL(string: strURL)!)
let loginTask = URLSession.shared.dataTask(with: request, completionHandler: { (data, response, error) in guard
let data = data, let _ = response , error == nil else {
print("error")
return
}
do{
let arrayJSON = try JSONSerialization.jsonObject(with: data,options: .allowFragments)as! Dictionary<String, AnyObject>
self.arrTable = [arrayJSON]
print(self.arrTable)
}catch let error as NSError { print("json error: \(error.localizedDescription)") }
DispatchQueue.main.async(execute: {
self.tableView.reloadData()
})
})
print("Web:\(strURL)")
loginTask.resume()
}
這是傑森數據
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://192.xxx.xx.xx:8081/WebServiceTest.asmx">[
[
{
"NonCID": "n10909",
"Name": "xxx",
"ClassType": "xxx",
"City": "xxx",
"Area": "xxx",
"Address": "xxx",
"TelArea": "xx",
"Tel": "2xxxxx56",
"Latitude": 2x.x047,
"Longitude": 1xx.495241
},
]</string>
我也嘗試XMlParse是可行的,但是得到這樣的數據
Getting tag:string
Tag detail:["["]
Tag detail:["\n {"]
Tag detail:["\n \"NonCID\": \"n10909\","]
Tag detail:["\n \"Name\": \""]
Tag detail:["1111\",\n \"ClassType\": \"2222\",\n \"City\": \"111\",\n \"Area\": \"111\",\n \"Address\": \"11111\",\n \"TelArea\": \"02\",\n \"Tel\": \"29857456\",\n \"Latitude\": xx.062047,\n \"Longitude\": 1xx.495241\n },\n {\n \"NonCID\": \"n10957\",\n \"Name\": \"xxx"]
Tag detail:["\",\n \"ClassType\": \"xx\",\n \"City\": \"xxx\",\n \"Area\": \"xxx\",\n \"Address\": \"xxxxx\",\n \"TelArea\": \"02\" }\n]"]
這是代碼
var tagName = String()
var tagContent = String()
func getTableDataFromWeb()
{
strURL = webDomain + "/SearchNonMemberByRange?Latitude=2x.&Longitude=1xx.4x241&Range=300"
url = URL(string: strURL)!
dataTask = session.dataTask(with: url) { (xmldata, response, error)
-> Void in
if xmldata == nil {
print("dataTaskWithRequest error: \(error)")
return
}
let xmlParser = XMLParser(data: xmldata!)
xmlParser.delegate = self
xmlParser.parse()
print("Web:\(strURL)")
dataTask.resume()
}
}
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String])
{
if elementName == "NonCID"{
tagName = elementName}
print("Getting Tag:\(elementName)")
}
func parser(_ parser: XMLParser, foundCharacters string: String)
{
tagContent = string
arr = [tagContent]
print("Tag Detail:\(arr)")
}
func parserDidEndDocument(_ parser: XMLParser)
{
DispatchQueue.main.async { () -> Void in
self.tableView.reloadData()
}
}
誰能告訴我應該使用Json data plz做什么,謝謝。
您的數據是XML。 碰巧的是,XML文件中XML元素之一的文本值為JSON。 因此,您需要XML解析代碼來提取JSON文本。 然后,您需要對提取的JSON使用JSONSerialization
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.