我花了很多时间寻找答案,但仍然没有运气,所以我决定放弃并向社区寻求帮助:
我有一个带有自签名证书的开发服务器2是的,我使用了policy.allowInvalidCertificates = YES;
3 SSL在自定义端口44302上
我需要运行一个下载任务,因为请求返回一个数据流 下面是我的代码:NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
policy.allowInvalidCertificates = YES;
manager.securityPolicy = policy;
NSURL *URL = [NSURL URLWithString:[NSString stringWithFormat:@"https://self_signed_cert.net:44302/storage/%@/action.download", _ticketId]];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
if (error) {
NSLog(@"Error: %@", error);
} else {
NSLog(@"%@ %@", response, responseObject);
}
}];
[dataTask resume];
错误如下:
2015-08-03 18:18:15.901 SSL_TEST[1517:23 . 943] Error: Error .错误Domain=NSURLErrorDomain Code=-1200 " SSL错误无法建立与服务器的安全连接。"用户信息= 0 x787d2f20{NSLocalizedDescription= SSL错误已经发生,一个安全的无法连接到服务器。NSLocalizedRecoverySuggestion=是否要连接到服务器呢?_kCFStreamErrorCodeKey = -9806,NSErrorFailingURLStringKey = https://self_signed_cert.net: 44302/存储/a430f316cfe076e9850874c0edad3dcb/action.download,_kCFStreamErrorDomainKey=3, NSUnderlyingError=0x787da700 "操作无法完成。"(kCFErrorDomainCFNetwork错误-1200年。)",NSErrorFailingURLKey = https://self_signed_cert.net: 44302/存储/a430f316cfe076e9850874c0edad3dcb/action.download}
将非常感谢您的帮助!谢谢。
我试过一个空的项目,它在应用程序上工作:
NSURL* lBaseURL = [NSURL URLWithString:@"https://myDomain/"];
AFHTTPSessionManager* lSessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:lBaseURL
sessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
AFSecurityPolicy* lPolicy= [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
lPolicy.allowInvalidCertificates = YES;
lSessionManager.securityPolicy = lPolicy;
[lSessionManager GET:@"https://myDomain/api/"
parameters:nil
success:^(NSURLSessionDataTask * _Nonnull task, id _Nonnull JSON)
{
NSLog(@"success %@", JSON);
}
failure:^(NSURLSessionDataTask * _Nonnull task, NSError * _Nonnull error)
{
NSLog(@"failure %@", error);
}];
- 不要忘记在你的目标(在应用程序和手表应用程序中)添加你的。文件
- 激活ATS进入。plist
NSAppTransportSecurity
- 激活ATS进入。plist
但是我坚持使用watchOS 2.0扩展。它只会失败,并显示以下错误:
Error Domain=NSURLErrorDomain Code=-1200 " SSL错误发生无法建立与服务器的安全连接。"UserInfo={NSLocalizedRecoverySuggestion=您想要连接到服务器呢?NSErrorFailingURLKey = https://myDomain/api_kCFStreamErrorCodeKey = -9802, NSErrorFailingURLStringKey = https://myDomain/apiNSErrorClientCertificateStateKey = 0, _kCFStreamErrorDomainKey = 3,NSLocalizedDescription= SSL错误已经发生,安全无法连接到服务器。}