HTTP Request in swift not working

后端 未结 6 957
攒了一身酷
攒了一身酷 2021-02-03 10:19

I\'m trying to learn about working with APIs in Swift. As a good first test, I figured I\'d hit the itunes API and just return some search results. I\'m in playground using the

相关标签:
6条回答
  • 2021-02-03 10:50

    Not sure why you aren't seeing an error—I get this:

    NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9807)

    You can test more effectively with httpbin.org—this works perfectly for me:

    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()
    
    0 讨论(0)
  • 2021-02-03 10:58

    Swift 3 code:

    <!-- language: lang-c -->
    
    import PlaygroundSupport
    PlaygroundPage.current.needsIndefiniteExecution = true
    
    0 讨论(0)
  • 2021-02-03 11:08

    My answer is not correct, it's really only the in the playgound indefinitite page execution. The session type does not matter.

    Run into the same issue recently and found a solution.

    The error is caused by using URLSession.shared() which apparently is not allowed in a playground sandbox.

    Create and use your own ephemeral URL session instead:

    let session = URLSession(configuration: URLSessionConfiguration.ephemeral)

    0 讨论(0)
  • 2021-02-03 11:09

    try following line and i guess it will work:

    XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
    
    0 讨论(0)
  • 2021-02-03 11:10

    For Swift 3/Xcode 8.2.1, combining a couple of the answers (rv1331, Wouter van Zuilen) gave the best results with no errors in Playground. I'm using this Swift 3 REST example:

    http://mrgott.com/swift-programing/30-work-with-rest-api-in-swift-3-and-xcode-8-using-urlsession-and-jsonserialization

    import PlaygroundSupport
    import Foundation
    
    PlaygroundPage.current.needsIndefiniteExecution = true
    URLCache.shared = URLCache(memoryCapacity: 0, diskCapacity: 0, diskPath: nil)
    
    0 讨论(0)
  • 2021-02-03 11:12

    Try adding this line of code:

    URLCache.shared = URLCache(memoryCapacity: 0, diskCapacity: 0, diskPath: nil)
    
    0 讨论(0)
提交回复
热议问题