如何使用Alamofire 1.3连接到自签名服务器
连接到自签名服务器时出现以下错误。
错误Domain = NSURLErrorDomain代码= -1202“此服务器的证书无效。您可能正在连接到假装为“
maskeddomain.com”的服务器,这可能会使您的机密信息受到威胁。UserInfo = 0x7fb6dec259e0
{NSURLErrorFailingURLPeerTrustErrorKey =,NSLocalizedRecoverySuggestion
=您是否仍然要连接到服务器?,_kCFStreamErrorCodeKey = -9813,NSUnderlyingError =
0x7fb6dbe0dd90“操作无法完成。”(kCFError120。
看起来Alamofire
1.3(https://github.com/Alamofire/Alamofire#security)允许禁用此验证。有人实施过吗?我在快速项目中使用的是Alamofire
API,不确定是否需要在确切位置实施“服务器信任策略管理器”。请指教。
回答:
有一种方法可以更改Alamofire管理器共享实例的服务器信任策略,但是不建议这样做。相反,您应该创建自己的定制管理器实例。这是推荐的解决方案,代码是
,在 编译。 *
因为您不会在Alamofire上使用 request 方法,而是在自定义管理器上使用 request
方法,所以您需要考虑将管理器存储在何处。我要做的是将其作为静态存储在我的网络包装器中(该类使用Alamofire并处理我的应用程序网络需求)。我这样设置:
private static var Manager : Alamofire.Manager = { // Create the server trust policies
let serverTrustPolicies: [String: ServerTrustPolicy] = [
"maskeddomain.com": .DisableEvaluation
]
// Create custom manager
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.HTTPAdditionalHeaders = Alamofire.Manager.defaultHTTPHeaders
let man = Alamofire.Manager(
configuration: NSURLSessionConfiguration.defaultSessionConfiguration(),
serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)
)
return man
}()
下一步是切换所有Alamofire.request()
与一起使用的呼叫Manager.request()
,因此您应该具有以下内容:
Manager.request(.GET, "http://stackoverflow.com").responseJSON( completionHandler: { (_, respose, result) -> Void in
if result.isSuccess {
// enjoy your success
} else if result.isFailure {
// deal with your failure
}
})
如果仍然要更改管理器的共享实例,请转到此处以获取更多信息。
以上是 如何使用Alamofire 1.3连接到自签名服务器 的全部内容, 来源链接: utcz.com/qa/406635.html