Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么Alamofire的请求失败?_Ios_Swift_Ssl_Alamofire - Fatal编程技术网

Ios 为什么Alamofire的请求失败?

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

我想获取github/用户的数据,然后我尝试了两种方法:

第一种方法是成功的:

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
}