Swift: NSURL правильно возвращает HTML из URL в Playground, но вылетает симулятор при использовании в приложении

Я использую NSURL, чтобы получить HTML-код веб-сайта, который прекрасно работает на игровой площадке, но вылетает в симуляторе, когда я использую его в приложении.
Код детской площадки:

import Foundation
import XCPlayground

// Let asynchronous code run
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true

let myUrl = NSURL(string: "http://www.google.com")
let request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
if error != nil {
print("Error: \(error)")
}
print("Response: \(response)")
print("Response String: \(responseString)")
}
task.resume()

Код приложения:

import UIKit
import Foundation

class ViewController: UIViewController {

@IBOutlet weak var testLabel: UILabel!

@IBAction func testButton(sender: UIButton) {
let myUrl = NSURL(string: "http://www.google.com")
let request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
self.testLabel.text = "\(responseString)"if error != nil {
print("Error: \(error)")
}
}
task.resume()
}

override func viewDidLoad() {
super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

}

Ошибка при сбое:
2015-10-27 20: 14: 54.105 testProject [51314: 431730] App Transport Security заблокировала загрузку ресурса HTTP (http: //) в виде открытого текста, поскольку она небезопасна. Временные исключения могут быть настроены через файл Info.plist вашего приложения.
фатальная ошибка: неожиданно найден ноль при развертывании необязательного значения
(Lldb)

Спасибо,
Ник

0

Решение

Я использовал код ниже:

class ViewController: UIViewController {

@IBOutlet weak var testLabel: UILabel!

@IBAction func testButton(sender: UIButton) {
let myUrl = NSURL(string: "http://www.google.com")
let request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
print("hey \(data)")
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
self.testLabel.text = "\(responseString)"if error != nil {
print("Error: \(error)")
}
}
task.resume()
}

override func viewDidLoad() {
super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

}

И в моей консоли напечатано следующее:

2015-10-28 02:54:49.284 trial[58972:2551861] App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
hey nil
fatal error: unexpectedly found nil while unwrapping an Optional value
(lldb)

Как вы видете data ноль Это может быть связано с тем, что http заблокирован из-за App Transport Security.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]