本文拿afnetworking 来说;
/*
.h 文件中
@property (nonatomic, strong)AFHTTPRequestOperationManager *shareClient;
+(instancetype)getSingleClass;
*/
------------------------>>>>>>>>>>>>>>>>>>>------------------
.m文件中
/**
* 单例类
*/
+(instancetype)getSingleClass{
staticMJ_HttpManager * shareManager = nil;
staticdispatch_once_t predicate;
dispatch_once(&predicate, ^{
shareManager =[[MJ_HttpManageralloc]init];
});
return shareManager;
}
-(AFHTTPRequestOperationManager *)shareClient{
if (_shareClient ==nil) {
_shareClient = [[AFHTTPRequestOperationManageralloc]initWithBaseURL:[NSURLURLWithString:LoginUrl]];
[_shareClient.requestSerializersetTimeoutInterval:10.f];//超时 10请求
[_shareClient.requestSerializerwillChangeValueForKey:@"timeoutInterval"];
[_shareClient.requestSerializerdidChangeValueForKey:@"timeoutInterval"];
_shareClient.requestSerializer = [AFJSONRequestSerializerserializer];
_shareClient.responseSerializer = [AFJSONResponseSerializerserializer];
_shareClient.responseSerializer.acceptableContentTypes = [NSSetsetWithObjects:@"text/plain",@"application/json",@"text/json",@"text/html", nil];
// _shareClient.securityPolicy.SSLPinningMode = AFSSLPinningModeCertificate ;
AFSecurityPolicy *policy = [AFSecurityPolicypolicyWithPinningMode:AFSSLPinningModeCertificate];
_shareClient.securityPolicy = policy;
// 2.设置证书模式
NSString * cerPath = [[NSBundlemainBundle] pathForResource:@"menjin"ofType:@"cer"];
NSData * cerData = [NSDatadataWithContentsOfFile:cerPath];
_shareClient.securityPolicy.pinnedCertificates = [[NSArrayalloc] initWithObjects:cerData,nil];
// 客户端是否信任非法证书
_shareClient.securityPolicy.allowInvalidCertificates =YES;
// 是否在证书域字段中验证域名
[_shareClient.securityPolicysetValidatesDomainName:NO];
}
return_shareClient;
}
//如果想要获得单例类的某个属性
MJ_HttpManager * http = [MJ_HttpManagergetSingleClass];
http.shareClient =nil;