我正在尝试使用Alamofire 5实施SSL固定,但在实施过程中遇到了问题。 我无法将AFsession.request称为方法:.post被视为额外参数。 我在下面附加了我的代码。
会话:
final class AFsession {
let evaluators = [
"mydomain.com":
PinnedCertificatesTrustEvaluator(certificates: [
Certificates.stackExchange
])
]
let session: Session
private init() {
session = Session(
serverTrustManager: ServerTrustManager(evaluators: evaluators)
)
}
private static let shared = AFsession()
static func request(_ convertible: URLRequestConvertible) -> DataRequest {
return shared.session.request(convertible)
}
}
struct Certificates {
static let stackExchange =
Certificates.certificate(filename: "mycert")
private static func certificate(filename: String) -> SecCertificate {
let filePath = Bundle.main.path(forResource: filename, ofType: "cer")!
let data = try! Data(contentsOf: URL(fileURLWithPath: filePath))
let certificate = SecCertificateCreateWithData(nil, data as CFData)!
return certificate
}
}
实现:
AF.request(URL, method: .post, parameters: [:], encoding: body, headers: header)
.responseString { response in
guard response.result.error == nil else {
// got an error in getting the data, need to handle it
print("error calling POST on \(URL)")
print(response.result.error!)
return
请求参数中有错误。 method:.post被视为一个额外的参数。 编辑:使用AF.request的标准实现工作正常 感谢您的帮助
答案 0 :(得分:0)
您需要使用通过Session
创建的ServerTrustManager
进行请求,但不能与AF.request
一起使用。