swift 3 urlRequest session.dataTask 未触发
swift 3 urlRequest session.dataTask not firing
我正在尝试使用 Swift 3 从 Yahoo 获取股票报价。尽管 Swift2 上有一些不错的教程,但其中 none 似乎可以很好地转换为 Swift 3.
我目前遇到的问题是,在下面的代码中,从未调用 session.dataTask。 print 语句从不触发,其中的其余代码不起作用。
我已经检查过请求变量看起来不错,并且 url 已经在雅虎开发者网站上进行了测试。
所以我想我一定是 dataTask 的语法错误或者有错误所以完全跳过。
有什么想法吗?
urlString = "http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.quotes where symbol IN ('APL')"
//let urlNSS : NSString = urlString as NSString
let urlStr : String = urlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
let url : URL = URL(string: urlStr as String)!
let request = URLRequest(url: url)
let session = URLSession.shared
let config = URLSessionConfiguration.default
let task = session.dataTask(with: request, completionHandler: {(data, response, error) -> Void in
print("in the task")
..
..
)}
task.resume()
如果我检查任务,我会看到以下内容
您必须恢复您创建的任务 (task.resume())。默认情况下,任务处于挂起状态。
我用不同的 Yahoo RSS Feed 创建了一个 Playground 文件 URL。 https://drive.google.com/file/d/0B5nqEBSJjCriWl9UTWcxSE42Yk0/view?usp=sharing
您问题中的 URL 没有提供任何数据。
<error xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:lang="en-US">
<description>No definition found for Table yahoo.finance.quotes</description>
</error>
代码如下:
//: Playground - noun: a place where people can play
import UIKit
import Foundation
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
var str = "Hello, playground"
let yahooURLString = "https://feeds.finance.yahoo.com/rss/2.0/headline?s=yhoo®ion=US&lang=en-US"
let yahooRSSURL: URL = URL(string: yahooURLString)!
var request = URLRequest(url: yahooRSSURL)
request.httpMethod = "GET"
let sessionConfig = URLSessionConfiguration.default
let session = URLSession(configuration: sessionConfig)
let task = session.dataTask(with: request) {data, response, err in
print("Entered the completionHandler")
print("Response JSON:\n\(String(data: data!, encoding: String.Encoding.utf8)!)")
}
task.resume()
希望这对您有所帮助。
编辑: 附上 playgorund 控制台中出现的打印语句的屏幕截图。
我正在尝试使用 Swift 3 从 Yahoo 获取股票报价。尽管 Swift2 上有一些不错的教程,但其中 none 似乎可以很好地转换为 Swift 3.
我目前遇到的问题是,在下面的代码中,从未调用 session.dataTask。 print 语句从不触发,其中的其余代码不起作用。
我已经检查过请求变量看起来不错,并且 url 已经在雅虎开发者网站上进行了测试。
所以我想我一定是 dataTask 的语法错误或者有错误所以完全跳过。
有什么想法吗?
urlString = "http://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.quotes where symbol IN ('APL')"
//let urlNSS : NSString = urlString as NSString
let urlStr : String = urlString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
let url : URL = URL(string: urlStr as String)!
let request = URLRequest(url: url)
let session = URLSession.shared
let config = URLSessionConfiguration.default
let task = session.dataTask(with: request, completionHandler: {(data, response, error) -> Void in
print("in the task")
..
..
)}
task.resume()
如果我检查任务,我会看到以下内容
您必须恢复您创建的任务 (task.resume())。默认情况下,任务处于挂起状态。
我用不同的 Yahoo RSS Feed 创建了一个 Playground 文件 URL。 https://drive.google.com/file/d/0B5nqEBSJjCriWl9UTWcxSE42Yk0/view?usp=sharing
您问题中的 URL 没有提供任何数据。
<error xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:lang="en-US">
<description>No definition found for Table yahoo.finance.quotes</description>
</error>
代码如下:
//: Playground - noun: a place where people can play
import UIKit
import Foundation
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
var str = "Hello, playground"
let yahooURLString = "https://feeds.finance.yahoo.com/rss/2.0/headline?s=yhoo®ion=US&lang=en-US"
let yahooRSSURL: URL = URL(string: yahooURLString)!
var request = URLRequest(url: yahooRSSURL)
request.httpMethod = "GET"
let sessionConfig = URLSessionConfiguration.default
let session = URLSession(configuration: sessionConfig)
let task = session.dataTask(with: request) {data, response, err in
print("Entered the completionHandler")
print("Response JSON:\n\(String(data: data!, encoding: String.Encoding.utf8)!)")
}
task.resume()
希望这对您有所帮助。
编辑: 附上 playgorund 控制台中出现的打印语句的屏幕截图。