【问题标题】:Credential request not working in swift凭证请求无法快速工作
【发布时间】:2015-08-21 20:17:58
【问题描述】:

我将一些 Objective-c 代码(进行了一些更改)移植到 swift 中,并且其中没有“私有”的链接可以工作,而另一个则不能。这就是我所拥有的:

import Cocoa

class MasterViewController: NSViewController, NSURLSessionDataDelegate {
  var session: NSURLSession!
  var courses: JSON!

  override func viewDidLoad() {
    super.viewDidLoad()

    let config: NSURLSessionConfiguration? =
    NSURLSessionConfiguration.defaultSessionConfiguration()

    session = NSURLSession(configuration: config, delegate: self, delegateQueue: nil )
    fetchFeed()
  }

  func fetchFeed() {
    let requestString: String = "https://bookapi.bignerdranch.com/courses.json"
    // let requestString: String = "https://bookapi.bignerdranch.com/private/courses.json"
    if let url: NSURL? = NSURL(string: requestString) {
      let request: NSURLRequest = NSURLRequest(URL: url!)
      let dataTask : NSURLSessionDataTask = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
        var jsonObject: [JSON] = JSON(data: data).arrayValue

        self.courses = JSON(data: data)

        dispatch_async(dispatch_get_main_queue(), { _ in
          println( self.courses?.debugDescription )
        })
      });
      dataTask.resume()
    }
  }

  func URLSession(session: NSURLSession, didReceiveChallenge challenge: NSURLAuthenticationChallenge, completionHandler: (NSURLSessionAuthChallengeDisposition, NSURLCredential!) -> Void) {
    var userIdString: String = "BigNerdRanch"
    var passwordString: String = "AchieveNerdvana"
    println( "Received challenge, responding with UID: \(userIdString) PWD: \(passwordString)")
    var cred: NSURLCredential = NSURLCredential(user: userIdString,
      password: passwordString,
      persistence: NSURLCredentialPersistence.ForSession)
    completionHandler( NSURLSessionAuthChallengeDisposition.UseCredential, cred )
  }

}

有什么想法吗? 谢谢

【问题讨论】:

  • 代码有什么问题?

标签: ios macos swift


【解决方案1】:

如果您注释掉其中没有“私有”的 URL,并取消注释其中包含“私有”的 URL,它将不起作用。如果您从网络浏览器(Chrome、Firefox、Safari 等)“https://bookapi.bignerdranch.com/private/courses.json”输入凭据“BigNerdRanch”作为用户 ID“AchieveNerdvana”作为密码,它会返回预期的 JSON

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多