iOS 使用 OpenAI API 获取数据:网络请求、解析和示例代码
在 iOS 中进行网络请求和解析数据可以使用 URLSession 和 JSONSerialization。
首先,在你的 iOS 项目中创建一个类,例如 'OpenAIManager',用于处理网络请求和数据解析。在这个类中,你可以定义一个方法来发送网络请求和解析数据。
import Foundation
class OpenAIManager {
private let apiKey: String
init(apiKey: String) {
self.apiKey = apiKey
}
func fetchData(completion: @escaping (Result<Data, Error>) -> Void) {
guard let url = URL(string: 'https://api.openai.com/data') else {
completion(.failure(NSError(domain: 'Invalid URL', code: 0, userInfo: nil)))
return
}
var request = URLRequest(url: url)
request.addValue(apiKey, forHTTPHeaderField: 'Authorization')
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
if let error = error {
completion(.failure(error))
return
}
guard let data = data else {
completion(.failure(NSError(domain: 'No data received', code: 0, userInfo: nil)))
return
}
completion(.success(data))
}
task.resume()
}
func parseData(data: Data) -> Result<[String: Any], Error> {
do {
guard let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] else {
throw NSError(domain: 'Invalid JSON', code: 0, userInfo: nil)
}
return .success(json)
} catch {
return .failure(error)
}
}
}
然后,在你的视图控制器中,你可以调用 'OpenAIManager' 类的方法来发送网络请求和解析数据。
class ViewController: UIViewController {
let openAIManager = OpenAIManager(apiKey: 'YOUR_API_KEY')
override func viewDidLoad() {
super.viewDidLoad()
openAIManager.fetchData { [weak self] result in
switch result {
case .success(let data):
if let jsonResult = self?.openAIManager.parseData(data: data) {
switch jsonResult {
case .success(let json):
// 在这里处理解析后的数据
print(json)
case .failure(let error):
// 解析数据失败
print(error)
}
}
case .failure(let error):
// 网络请求失败
print(error)
}
}
}
}
记得将 'YOUR_API_KEY' 替换为你的 OpenAI API 密钥。这个例子中的代码会发送一个 GET 请求到 'https://api.openai.com/data',并使用提供的 API 密钥进行身份验证。然后,它会解析返回的数据并在控制台打印出来。
请注意,这个例子中的代码是基于 Swift 语言编写的,如果你的项目使用 Objective-C,你可以使用 NSURLSession 和 NSJSONSerialization 来实现相同的功能。
原文地址: https://www.cveoy.top/t/topic/qm1c 著作权归作者所有。请勿转载和采集!