Ios 为什么Alamofire的请求失败?
我想获取github/用户的数据,然后我尝试了两种方法: 第一种方法是成功的:Ios 为什么Alamofire的请求失败?,ios,swift,ssl,alamofire,Ios,Swift,Ssl,Alamofire,我想获取github/用户的数据,然后我尝试了两种方法: 第一种方法是成功的: AF.request("https://api.github.com/users").responseJSON { response in print("UOUOUOUOUOU", response.description) } 但第二次失败了,为什么 Network.request(Request.users).responseDecodable { (response: AFDataResponse&l
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")
}
}
我得到这个错误:
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])
与
我得到这个错误:
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])
ResponseSerialization失败(原因:
Alamofire.AFError.ResponseSerializationFailureReason.decodingFailed(错误:
Swift.DecodingError.typesmatch(Swift.Dictionary,
Swift.DecodingError.Context(编码路径:[],调试说明:
“应解码字典,但找到数组
而不是“,underyingerror:nil)))
上一个错误明确地说明了问题所在。API调用的响应是一个数组,而不是您假设的字典。将您预期的响应转换为用户列表,然后应该可以:
Network.request(Request.users).responseDecodable { (response: AFDataResponse<[User]>) in
switch response.result {
case .success(let value):
print("SUCCESS")
case .failure(let error):
print("FAIL")
}
}
Network.request(request.users).responseDecodable{(response:AFDataResponse)位于
开关响应。结果{
成功案例(let value):
打印(“成功”)
案例。失败(let错误):
打印(“失败”)
}
}
根对象是一个数组,没有包含键项的对象
,因此删除用户列表
替换
AFDataResponse<UserList>)
struct User: Codable {
let displayName: String
}
与
与其说打印(“失败”)毫无意义,不如说打印(错误)相关主机的错误描述是没有找到
ServerTrustEvaluator
。我会忽略这个问题evaluator@vadian你能更详细地回答这个问题吗?我不能写答案,因为我在猜测。尝试一个没有ServerTrustManager
@vadian的简单会话我编辑了我的问题请参见
AFDataResponse<UserList>)
AFDataResponse<[User]>)
struct User: Codable {
let displayName: String
}
struct User: Codable {
let login: String
}