【发布时间】:2015-10-29 14:38:41
【问题描述】:
我正在尝试使用 NSURL 函数获取 URL 的 HTML。代码运行良好,并且在从操场执行时正确返回了 HTML,但是当我将它实现到情节提要的按钮中时,应用程序崩溃了。我更改了 Info.plist 文件中的应用程序传输安全性,但我仍然遇到崩溃。这是我的 Info.plist:http://imgur.com/a/BB3KF。错误消息还说有一个 nil 值,但是我已经测试了函数中的变量,一切似乎都是 != nil。
游乐场代码:
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()
XCode 代码:
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-29 10:20:36.127 testProject[1263:49414] App Transport Security 已阻止明文 HTTP (http://) 资源加载,因为它不安全。可以通过应用程序的 Info.plist 文件配置临时例外。 致命错误:在展开可选值时意外发现 nil (lldb)
【问题讨论】:
-
将 Allow Arbitrary Loads 的布尔值更改为
YES,之后您可能需要清理或清除派生数据。 -
@EricKenny 非常感谢您的帮助。我添加了它,但它仍然不起作用。 imgur.com/a/n8aJ8 我收到的错误消息:2015-10-29 11:14:26.368 testProject[1403:58840] App Transport Security 已阻止明文 HTTP (http://) 资源加载,因为它不安全。可以通过应用程序的 Info.plist 文件配置临时例外。致命错误:在展开可选值 (lldb) 时意外发现 nil
-
@EricKenny 也收到了这个:imgur.com/Rg0TMsZ 谢谢
标签: ios swift ios-simulator nsurl swift-playground