title: Swift 3: URLSession / URLRequest Not Working
body: <p>I am still trying to convert our application from Swift 2 over to Swift 3 because I am being forced to since all of our Apple devices are now running iOS 10. </p>
  
  <p>I have gone through the code conversion and thought I was doing well however, while attempting to debug my JSON issues (posted in another question), I am now dealing with requests not even being sent.</p>
  
  <pre><code>let params: [String:AnyObject] = [
      "email":"\(self.preferences.string(forKey: "preference_email")!)" as AnyObject
  ]
  let requestParams: [String:AnyObject] = [
      "action":"601" as AnyObject,
      "params":params as AnyObject
  ]
  
  do {
      let requestObject = try JSONSerialization.data(withJSONObject: requestParams, options:[])
      var request = URLRequest(url: URL(string: "http://domain.tld/path/")!)
  
      request.httpBody = requestObject
      request.httpMethod = "POST"
  
      let config = URLSessionConfiguration.default
      let session = URLSession(configuration: config)
  
      NSLog("Got here?")
  
      session.dataTask(with: request) {data, response, error in
          guard let data = data, error == nil else {
              print("error=\(error)")
              return
          }
  
          NSLog("Got here 3?")
  
          let object:JSON = JSON(data:data)
  
          NSLog("Object: \(object)")
      }.resume()
  
      NSLog("Got here 4?")
  } catch {
      NSLog("Got here catch?")
  }
  
  NSLog("End of getUser")
  </code></pre>
  
  <p>The code above yields the following output:</p>
  
  <pre><code>2016-10-04 13:00:12.011969 OneTouch[1589:623015] [DYMTLInitPlatform] platform initialization successful
  2016-10-04 13:00:12.264319 OneTouch[1589:622954] [MC] System group container for systemgroup.com.apple.configurationprofiles path is /private/var/containers/Shared/SystemGroup/systemgroup.com.apple.configurationprofiles
  2016-10-04 13:00:12.265321 OneTouch[1589:622954] [MC] Reading from public effective user settings.
  2016-10-04 13:00:12.295055 OneTouch[1589:622954] Got here?
  2016-10-04 13:00:12.295445 OneTouch[1589:622954] Got here 4?
  2016-10-04 13:00:12.295515 OneTouch[1589:622954] End of getUser
  (lldb) 
  </code></pre>
  
  <p>Which means that the request isn't even being made. Is there some key that I have to add to the PLIST again? This is starting to get annoying.</p>
  
  <p>Below is my old code and it isn't even working anymore:</p>
  
  <pre><code>let params: [String:AnyObject] = [
      "email":"\(self.preferences.string(forKey: "preference_email")!)" as AnyObject
  ]
  let requestParams: [String:AnyObject] = [
      "action":"601" as AnyObject,
      "params":params as AnyObject
  ]
  
  do {
      let requestObject = try JSONSerialization.data(withJSONObject: requestParams, options:[])
      let request = NSMutableURLRequest(url: URL(string: "http://domain.tld/path/" as String)!, cachePolicy:NSURLRequest.CachePolicy.reloadIgnoringLocalCacheData, timeoutInterval: 20)
  
      request.httpBody = requestObject
      request.httpMethod = "POST"
  
      NSLog("Got here?")
  
      let task = URLSession.shared.dataTask(with: request as URLRequest, completionHandler: {data, response, error in
          if error != nil {
              NSLog("Got here 2?")
          }
  
          NSLog("Got here 3?")
  
          let object:JSON = JSON(data:data!)
  
          NSLog("Object: \(object)")
      })
  
      NSLog("Got here 4?")
  
      task.resume()
  } catch {
      NSLog("Got here catch?")
  }
  
  NSLog("End of getUser")
  </code></pre>
  
  <p>The code above yields the same output as the other code does!</p>