2016-10-13 4 views
-2

У меня проблема. Safari может загружать страницу h ttp://ip-api.com/json, но задача URLSession не может. Вот код внутри viewDidLoadНе удается загрузить данные JSON

let url = URL(string: "http://ip-api.com/json")! 
    let request = URLRequest(url: url) 
    let task = URLSession.shared.dataTask(with: request, completionHandler: {(data, response, error) -> Void in 
     print("this is the server response: \(response)") 
     if error != nil { 
      print("some error: \(error)") 
     } else { 
      if let urlContent = data { 
       print(urlContent) 
      } 
     } 
    }) 
    task.resume() 

Журнал консоли сообщает следующее содержание ошибки:

... некоторые ошибки: Дополнительно (Error Domain = NSURLErrorDomain Code = -1022 «Ресурс не может быть загружен потому что для политики безопасности в приложении требуется использование безопасного соединения ». UserInfo = {NSUnderlyingError = 0x60800005bc00 {Ошибка домена = kCFErrorDomainCFNetwork Code = -1022" (null) "}, NSErrorFailingURLStringKey = http://ip-api.com/json, NSErrorFailingURLKey = http://ip-api.com/json, NSLocalizedDescription = Ресурс может не загружается, так как для политики безопасности приложения требуется использование безопасного соединения.})

+1

Возможный дубликат [Ресурс не может быть загружен, так как для политики безопасности при использовании приложения требуется использование безопасного соединения] (http://stackoverflow.com/questions/32631184/the-resource-could-not-be- load-because-the-app-transport-security-policy-requi) – vadian

ответ

0

Произошла тривиальная ошибка! При редактировании элемента plist я оставил пробел между <key> и именем свойства, следующим образом: <key> NSAppTransportSecurity</key>. К сожалению

0

В файле info.plist добавить это,

<key>NSAppTransportSecurity</key> 
    <dict> 
     <key>NSAllowsArbitraryLoads</key> 
     <true/> 
     <key>NSExceptionDomains</key> 
     <dict/> 
     <key> http://ip-api.com</key> 
     <string></string> 
    </dict> 

Это будет работать для вас.

+1

Спасибо всем. Я просто забыл пустое пространство между и NSAppTransportSecurity в источнике .plist. Проблема решена. –