我连接到的服务使用自签名证书。出于开发目的,我不想验证该链。
使用swift 3和Alamofire 4。相应地修正了自动测试系统:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>url.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
用于连接和禁用计算的代码。
let serverTrustPolicies: [String: ServerTrustPolicy] = [
"example.domain.com": .pinCertificates(
certificates: ServerTrustPolicy.certificates(),
validateCertificateChain: false,
validateHost: true
),
"sub.url.com": .disableEvaluation
]
let sessionManager = Alamofire.SessionManager(
serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies)
)
let headers = ["Authorization": "Basic /*...*/"]
sessionManager.request("https://sub.url.com/path", headers: headers).responseJSON { response in
print(response.request) // original URL request
print(response.response) // HTTP URL response
print(response.data) // server data
print(response.result) // result of response serialization
debugPrint(response)
if let JSON = response.result.value {
print("JSON: \(JSON)")
}
}
来自转储打印的错误日志
[结果]:失败:错误域=NSURErrorDomain代码=-999“已取消”用户信息={NSERRORFAILINGURKEY=https://sub.url.com/path,NSLocalizedDescription=已取消,NSErrorFailingURLStringKey=https://sub.url.com/path}
URL已被屏蔽。
self.getSessionManager().request(urlstring, method: methods, parameters: parameters, encoding: JSONEncoding.prettyPrinted, headers: Header).responseJSON(queue: nil, options: JSONSerialization.ReadingOptions.allowFragments) { (responseObject) in ... .... }.session.finishTasksAndInvalidate()
任务完成后,只需使用invalidate方法,即会话。finishtasks和invalidate()
请将此语句添加到responseJson块的末尾:
manager.session.invalidateAndCancel()
如果在块执行完成之前不保留管理器的对象,则会发生这种情况,因此这将确保其保留。
干杯
要保留SessionManager实例,您需要在传递给响应JSON的闭包中捕获它:
sessionManager.request("https://sub.url.com/path", headers: headers).responseJSON { response in
let _ = sessionManager // retain
// ...
}
否则,sessionManager
将很快被解除分配,它将超出范围,任何正在执行的请求都将被取消。
我已经成功地为我的令牌获得了钥匙链,并将其传递给如下所示的AccessTokenAdapter类。超文本传输协议127.0.0.1:8000/api2/projects/?format=json传递为project ectsURL。 但是,从print(error)开始,我的Xcode显示了类似于error Domain=nsurerrordomain Code=-999“cancelled”Us
嗨,我试图使用阿拉莫菲尔为我的项目,但错误出来了。这是我的请求代码//谷歌测试 结果]:失败:错误域=nsurErrorDomain代码=-999“已取消” UserInfo={NSErrFailingURLKey=http://google.com/, NSLocalizedDescription=已取消, NSERRORFAILLINGURLSTRINGKEY=http://google.co
我正在我的项目中进行登录,我正在使用Alamofire请求(swift 2.0),我总是遇到无法解决的错误。 错误域=NSURLErrorDomain代码=-999“已取消”用户信息=。。。{NSErrorFailingURLKey=…,NSLocalizedDescription=已取消,NSErrorFailingURLStringKey=…} 这是我的密码: 当用户按下按钮时,我在Login
我正在使用iOS 11的AFN网络。我得到的错误如下: 任务 我已经尝试了所有可能的方法。 请帮我解决这个问题。 非常感谢。
问题内容: 像这样的代码: 问题答案: 不适用于我。最好在 Alamofire中 使用这样的代码: