ios - 从 NSURLSessionTaskDelegate 获取数据

标签 ios swift nsurlsession

我正在尝试将 NSURLSessionDataTaskDelegate 一起使用,但我找不到一种方法来转换获得的数据通过 didReceiveData 方法转换为字符串。

这是我正在使用的代码,我遇到的问题是我得到了一些数据,但是当我尝试将这些数据转换为字符串时,我得到了 nil,而预期结果将是我请求的页面的来源。

class ViewController: UIViewController, NSURLSessionDataDelegate {

    var session:NSURLSession?
    var data = NSMutableData()

    override func viewDidLoad() {
        super.viewDidLoad()

        let sessionConfiguration = NSURLSessionConfiguration.defaultSessionConfiguration()
        session = NSURLSession(configuration: sessionConfiguration, delegate: self, delegateQueue: NSOperationQueue.mainQueue())
        session!.dataTaskWithRequest(NSURLRequest(URL: NSURL(string: "http://www.google.com")!)).resume()
    }

    func URLSession(session: NSURLSession, task: NSURLSessionTask, didCompleteWithError error: NSError?){
        var str = NSString(data: NSData(data: self.data), encoding: NSUTF8StringEncoding)
        println(data) // IT PRINTS DATA CONTENT
        println(str) // IT PRINTS nil :(
    }

    func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didReceiveData data: NSData){
        self.data.appendData(data)
    }

最佳答案

很可能接收到的字符串数据不是 UTF8 编码的。试试 NSASCIIStringEncoding。

关于ios - 从 NSURLSessionTaskDelegate 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29896556/

相关文章:

ios - 无法更改 Apple Watch 通知中的窗框标题

ios - 动态增加/减少自定义 UINavigationBar 的高度

ios - 在应用程序关闭时使用 SwiftUI 处理传入的自定义 URL 类型

swift - Swift 扩展的访问控制

ios - UICollectionView becomeFirstResponder 错误行为

ios - 为 Alamofire 全局设置超时间隔

ios - 'initWithRequest :delegate:' is deprecated: first deprecated in iOS 9. 0 - 使用 NSURLSession(参见 NSURLSession.h)

ios - 如何检查应用程序特定的 CloudKit 数据,或访问 iTunes 应用程序中无法访问的数据?

sorting - 基于其他排序数组对数组进行排序

ios - 如何在 Swift 中发出 HTTP 请求?