gpt4 book ai didi

json - 在 Swift 中调用 api 时无法加载 JSON

转载 作者:可可西里 更新时间:2023-11-01 01:43:01 25 4
gpt4 key购买 nike

我有自己的应用程序接口(interface)。我试图调用 api,我需要获取 json 数据作为响应。这是我的代码

import Cocoa

class ViewController: NSViewController {

@IBOutlet weak var EmailText: NSTextField!

@IBOutlet weak var PasswordText: NSSecureTextField!
@IBAction func signin(sender: AnyObject) {
println("email is \(EmailText.objectValue) and Password is \(PasswordText.objectValue)")

var url : String = "https:username:password@api.example.co/api/v3/auth/token/"
var request : NSMutableURLRequest = NSMutableURLRequest()
request.URL = NSURL(string: url)
request.HTTPMethod = "GET"

NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue(), completionHandler:{ (response:NSURLResponse!, data: NSData!, error: NSError!) -> Void in
var error: AutoreleasingUnsafeMutablePointer<NSError?> = nil
let jsonResult: NSDictionary! = NSJSONSerialization.JSONObjectWithData(data, options:NSJSONReadingOptions.MutableContainers, error: error) as? NSDictionary

if (jsonResult != nil) {
println("\(jsonResult)")
} else {
println("Couldn't load json")
}


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

// Do any additional setup after loading the view.
}

override var representedObject: AnyObject? {
didSet {
// Update the view, if already loaded.
}
}
}

jsonResult 应该给我 apikey 作为 json 数据。

但是在运行 mac 应用程序时向我显示了 else 条件。由于我对 swift 和构建 mac 应用程序都是新手,所以我无法克服这个问题。

最佳答案

这是这个 error: Error Domain=HTTPTask Code=404 "page not found" UserInfo=0x608000228720 {NSLocalizedDescription=page not found} 的副本我认为。无论如何,正如我针对该问题所说的那样,请检查以下内容。

您使用的格式 user@email.com:password@api.domain/com/.... 在您使用 Javascript 或 Jquery 时可以使用。

在 Swift 中,它不接受 basic-auth。对于基本身份验证,我们必须将编码字符串发送到身份验证 url,如:

let config = NSURLSessionConfiguration.defaultSessionConfiguration()
let userPasswordString = "\(Email.stringValue):\(Password.stringValue)"
let userPasswordData = userPasswordString.dataUsingEncoding(NSUTF8StringEncoding)
let base64EncodedCredential = userPasswordData!.base64EncodedStringWithOptions(nil)
let authString = "Basic \(base64EncodedCredential)"
println("\(authString)")
config.HTTPAdditionalHeaders = ["Authorization" : authString]
let session = NSURLSession(configuration: config)



let url = NSURL(string: "https://api.domain.com/api/v2/auth/token/")
let task = session.dataTaskWithURL(url!) {
(let data, let response, let error) in
if let httpResponse = response as? NSHTTPURLResponse {
let dataString = NSString(data: data, encoding: NSUTF8StringEncoding)
}
}

然后把数据打印出来看看肯定能满足你的问题。

关于json - 在 Swift 中调用 api 时无法加载 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27502090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com