【发布时间】:2019-12-17 15:57:08
【问题描述】:
我想获取github/users的数据,然后我尝试了两种方法:
第一种方法成功:
AF.request("https://api.github.com/users").responseJSON { response in
print("UOUOUOUOUOU", response.description)
}
但是第二次失败了,为什么?
Network.request(Request.users).responseDecodable { (response: AFDataResponse<UserList>) in
switch response.result {
case .success(let value):
print("SUCCESS")
case .failure(let error):
print("FAIL")
}
}
我需要使用第二种方法。
这是我的班级网络
class Network {
let session: Session
let evaluators = ["api.github.com/users": PinnedCertificatesTrustEvaluator(certificates: [
Certificates.github
])
]
private init() {
session = Session(serverTrustManager: ServerTrustManager(evaluators: evaluators)
)
}
private static let shared = Network()
static func request(_ convertible: URLRequestConvertible) -> DataRequest {
return shared.session.request(convertible)
}
}
我得到这个错误:
FAIL serverTrustEvaluationFailed(reason: Alamofire.AFError.ServerTrustFailureReason.noRequiredEvaluator(host: "api.github.com"))
2019-12-17 12:03:21.649222-0400 SSLOwner[5533:83111] Task <57DC5433-F132-4453-BB68-CCF90B5F6058>.<1> HTTP load failed, 0/0 bytes (error code: -999 [1:89])
编辑 1:这是我的 Struct UserList 和 User
import Foundation
struct UserList: Codable {
let users: [User]
enum CodingKeys: String, CodingKey {
case users = "items"
}
}
struct User: Codable {
let displayName: String
}
与
session = Session()
我得到这个错误:
responseSerializationFailed(原因: Alamofire.AFError.ResponseSerializationFailureReason.decodingFailed(错误: Swift.DecodingError.typeMismatch(Swift.Dictionary, Swift.DecodingError.Context(codingPath: [], debugDescription: “预期解码字典,但找到一个数组 而是。”,基础错误:无))))
【问题讨论】:
-
而不是
print("FAIL")print(error)是毫无意义的 -
错误描述是没有找到关联主机的
ServerTrustEvaluator。我会省略评估器 -
@vadian 你能详细回答这个问题吗
-
我无法写出答案,因为我在猜测。尝试一个没有
ServerTrustManager的简单会话 -
@vadian 我编辑了我的问题,请参阅