簡體   English   中英

使用Swift獲取網站數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM