我试图了解如何在Swift中使用API。作为一个很好的第一次测试,我想我会点击itunes API并返回一些搜索结果。我在游乐场使用以下代码。我没有收到任何错误,但我的println没有输出任何内容。谁知道什么是错的?
谢谢!
import UIKit
import XCPlayground
XCPSetExecutionShouldContinueIndefinitely()
let url = NSURL(string: "https://itunes.apple.com/lookup?id=909253")
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
}
task.resume()
答案 0 :(得分:26)
尝试添加以下代码:
URLCache.shared = URLCache(memoryCapacity: 0, diskCapacity: 0, diskPath: nil)
答案 1 :(得分:21)
对于Swift 3 / Xcode 8.2.1,结合几个答案(rv1331,Wouter van Zuilen)给出了最好的结果,而Playground没有错误。我正在使用这个Swift 3 REST示例:
import PlaygroundSupport
import Foundation
PlaygroundPage.current.needsIndefiniteExecution = true
URLCache.shared = URLCache(memoryCapacity: 0, diskCapacity: 0, diskPath: nil)
答案 2 :(得分:11)
Swift 3代码:
<!-- language: lang-c -->
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true
答案 3 :(得分:5)
尝试以下行,我猜它会起作用:
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
答案 4 :(得分:0)
不确定为什么你没有看到错误 - 我明白了:
NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9807)
您可以使用httpbin.org更有效地测试 - 这对我来说非常有用:
let url = NSURL(string: "http://httpbin.org/get")
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
}
task.resume()
答案 5 :(得分:0)
我的回答是不正确的,它实际上只是在playgound indefinitite页面执行中。会话类型无关紧要。
最近遇到同样的问题并找到了解决方案。
该错误是由使用 URLSession.shared()
导致的,这显然是在游乐场沙箱中不允许的。
创建并使用您自己的临时URL会话:
let session = URLSession(configuration: URLSessionConfiguration.ephemeral)