如何使用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

回到顶部