gpt4 book ai didi

swift - 调用 SwiftyDropbox 方法时的 NSURLErrorDomain 代码 -999

转载 作者:搜寻专家 更新时间:2023-11-01 05:35:50 25 4
gpt4 key购买 nike

我在“App Folder”的许可下合并了 Dropbox API V2。

使用curl调用成功:

curl -X POST https://api.dropboxapi.com/2/files/list_folder \
--header 'Authorization: Bearer vSBSoEs...............' \
--header 'Content-Type: application/json' \
--data '{"path":""}'

但是,使用最新的 swift api 调用失败:

Domain=NSURLErrorDomain Code=-999 "cancelled" UserInfo={NSErrorFailingURLKey=https://api.dropbox.com/2/files/list_folder, NSLocalizedDescription=cancelled, NSErrorFailingURLStringKey=https://api.dropbox.com/2/files/list_folder}

我已按照步骤合并 API,并使用它来调用客户端:

func authDropbox() -> DropboxClient {
let client = DropboxClient(accessToken: DROPBOX_TOKEN)

return client
}

enum DropBoxListResult {
case Files(Array<Files.Metadata>)
case Error(String)
}

enum DropBoxResult {
case Result(Files.FileMetadata)
case Error(Error)
case PathError
}

func listDropbox(name:String, result: @escaping ((DropBoxListResult) -> Void))
{
Log.info("List:", name)

let client = authDropbox()

client.files.listFolder(path: name).response { response, error in

if let r = response {
Log.info(response)
result(DropBoxListResult.Files(r.entries))
} else if let error = error {
Log.error(error)
result(DropBoxListResult.Error(String(describing: error)))
}
}
}

最佳答案

我遇到了同样的问题,并从 https://www.dropboxforum.com/t5/API-support/999-quot-cancelled-quot-Error/td-p/192322 找到了解决方案

问题是 client 的范围在收到响应时超出了范围。在您的情况下,您将 client 存储在函数 listDropbox 中,该函数在收到响应时超出范围。

解决方案是将 client 对象存储为类中的变量,在收到响应后不会超出范围。

class DropboxApi : NSObject {

let client: DropboxClient = DropboxClient(accessToken: DROPBOX_TOKEN)

enum DropBoxListResult {
case Files(Array<Files.Metadata>)
case Error(String)
}

enum DropBoxResult {
case Result(Files.FileMetadata)
case Error(Error)
case PathError
}

func listDropbox(name:String, result: @escaping ((DropBoxListResult) -> Void))
{
Log.info("List:", name)

client.files.listFolder(path: name).response { response, error in

if let r = response {
Log.info(response)
result(DropBoxListResult.Files(r.entries))
} else if let error = error {
Log.error(error)
result(DropBoxListResult.Error(String(describing: error)))
}
}
}
}

关于swift - 调用 SwiftyDropbox 方法时的 NSURLErrorDomain 代码 -999,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40516402/

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