我在 SwiftUI 中编写了一个应用程序,我试图向外部服务器发出 HTTP 请求以获取 JSON 数据。我正在使用 URLSession 来执行此请求。但是,当我尝试发出请求时,我收到“不支持的 URL”错误。
我已经仔细检查了 URL 地址,它的格式似乎正确。有什么我忽略的事情或者我需要做些什么来修复这个错误?
我的代码看起来像这样:
struct GroupsResponse: Decodable {
let results: [Groups]
}
struct Groups: Decodable {
let Id: Int
let Descriere: String
}
private func fetchGroupsFromAPI() async throws -> [Groups] {
let url = URL(string: "http://orar.usarb.md/api/access/getGroups")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
let (data, _) = try await URLSession.shared.data(for: request)
let decoded = try JSONDecoder().decode(GroupsResponse.self, from: data)
print(decoded)
return decoded.results
}
private func button(_ title: String, color: Color) -> some View {
Button(action: {
Task {
do {
let movies = try await fetchGroupsFromAPI()
print(movies)
} catch {
print(error)
}
}
}) {
Text(title)
.frame(height: 40)
.frame(maxWidth: .infinity)
.background(color.opacity(0.5))
.foregroundColor(.black)
}
}
}
我尝试提出请求,但出现此错误
错误域=NSURLErrorDomain代码=-1002“不支持的URL”UserInfo={NSLocalizedDescription=不支持的URL,NSErrorFailingURLStringKey=/api/access/getGroups,NSErrorFailingURLKey=/api/access/getGroups,_NSURLErrorRelatedURLSessionTaskErrorKey=( “本地数据任务<39D779DF-E734-4D65-8722-23F3843FB2D9>。<3>” ), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <39D779DF-E734-4D65-8722-23F3843FB2D9>.<3>, NSUnderlyingError=0x600000c68390 {错误域=kCFErrorDomainCFNetwork 代码=-1002“(null)”}}
在文档中我有 POST 请求,但没有 GET
我尝试修改信息,我尝试重建项目并对代码结构进行一些更改
struct GroupsResponse: Decodable {
let results: [Groups]
}
struct Groups: Decodable {
let Id: Int
let Descriere: String
}
func fetchGroupsFromAPI() async throws -> [Groups] {
let url = URL(string: "http://orar.usarb.md/api/access/getGroups")!
let (data, _) = try await URLSession.shared.data(from: url)
let decoded = try JSONDecoder().decode(GroupsResponse.self, from: data)
return decoded.results
}
默认情况下,出于安全原因,Apple 不允许发出 HTTP 请求,除非您在 Info.plist 文件中启用
Allow Arbitrary Loads
。因此,您可以通过以下方式在 plist 文件中启用该密钥进行测试:
项目 -> 选择目标 -> 信息 -> 添加密钥