[英]Get Website Data Using Swift
我試圖使用NSURLSession
從espn中提取一些數據,但我似乎無法讓它工作。 它打印只有nil
。
我已經在他們的網站上用另一個頁面測試了這個方法並且它有效,但我無法使用代碼中的那個。 這是有問題的代碼:
var url = NSURL(string: "http://espn.go.com/golf/leaderboard?tournamentId=2271")
if url != nil {
let task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in
print(data)
if error == nil {
var urlContent = NSString(data: data, encoding: NSUTF8StringEncoding) as NSString!
print(urlContent)
我也嘗試過更改無法正常工作的編碼類型。 它打印的數據看起來像是UTF 8格式,所以我認為這不會起作用,但覺得我應該嘗試。
我覺得我的想法已經用完了。
編輯:應該指定更多, print(data)
打印出我所期望的編碼數據,但print(urlContent)
打印為nil
。
這是完整的例子
var url = NSURL(string: "http://espn.go.com/golf/leaderboard?tournamentId=2271")
if url != nil {
let task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in
print(data)
if error == nil {
var urlContent = NSString(data: data, encoding: NSASCIIStringEncoding) as NSString!
print(urlContent)
}
})
task.resume()
}
看起來這里正確的編碼是NSASCIIStringEncoding
而不是NSUTF8StringEncoding
。
這不是解決這個問題的最好方法,但上面的答案在swift 3中不起作用,所以我使用了這個。
let url = NSURL(string: "http://espn.go.com/golf/leaderboard?tournamentId=2271")
if url != nil {
let task = URLSession.shared.dataTask(with: url! as URL, completionHandler: { (data, response, error) -> Void in
print(data as Any)
if error == nil {
let urlContent = NSString(data: data!, encoding: String.Encoding.ascii.rawValue) as NSString!
print(urlContent as Any)
}
})
task.resume()
}
它應該像這樣工作:
var url = NSURL(string: "http://espn.go.com/golf/leaderboard?tournamentId=2271")
if url != nil {
let task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in
print(data)
if error == nil {
var urlContent = NSString(data: NSData!, encoding: Uint)
print(urlContent)
}
})
task.resume()
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.