【问题标题】:How to work with NSURLConnection? [duplicate]如何使用 NSURLConnection? [复制]
【发布时间】:2016-04-29 14:55:11
【问题描述】:

请看下面的代码:

override func viewDidLoad() {
  super.viewDidLoad()

  let url2 = NSURL (string: "http://leinelab.net/api/spaceapi.json")
  let requestObj = NSURLRequest(URL: url2!);
  let response: AutoreleasingUnsafeMutablePointer<NSURLResponse?> = nil;
  let responseData = (try? NSURLConnection.sendSynchronousRequest(requestObj, returningResponse: response)) as NSData?

  let datastring = NSString(data: responseData!, encoding: NSUTF8StringEncoding)  
  let datastring2 = String(datastring!)

  let text = ":true}"
  if datastring2.rangeOfString(text) != nil
  .
  .
  .

在这里的某个地方,我必须使用 NSURLConnection 来访问具有自签名证书的网站,但我不知道如何操作。代码在 Xcode 6 下工作,升级到 Xcode 7 后就不行了。

编辑:

这是错误信息:

2016-01-22 22:45:56.678 LL-Test[3968:147205] 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. fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)

【问题讨论】:

  • 应用程序是否崩溃或无法编译?您是否收到任何错误消息?顺便说一句:NSURLConnection 在 iOS 9 中已弃用。您应该使用 NSURLSession
  • 请您编辑您的问题,以便您的所有代码都在代码块内;它使问题更容易阅读。此外,在问题中添加一些关于什么不起作用的更多细节;是崩溃吗?有错误信息吗?代码是否拒绝编译?请详细说明。
  • 构建工作,没有崩溃。该应用程序根本无法启动。这是错误消息:2016-01-22 22:45:56.678 LL-Test[3968:147205] App Transport Security 已阻止明文 HTTP (http://) 资源加载,因为它不安全。可以通过应用程序的 Info.plist 文件配置临时例外。致命错误:在展开可选值 (lldb) 时意外发现 nil
  • 完整代码如下:
  • 对不起,完整的代码太长了。

标签: ios nsurlconnection xcode7


【解决方案1】:

从 iOS 9 开始你必须使用 HTTPS。如果你想使用 HTTP,你必须在 info.plist 中配置例外。 由于这种行为,datastringdatastring2nil,这会导致崩溃。

要配置“App Transport Security”例外,请阅读 Apple 开发者论坛中的这篇文章:https://forums.developer.apple.com/thread/3544

【讨论】:

  • HTTPS 也不起作用。原因似乎是自签名证书。但我想我在论坛帖子中找到了一些东西。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-08
相关资源
最近更新 更多