// 封装的网络请求工具类
#import "YYCHttpTool.h"
#import "AFNetworking.h"
#import "YYCCommon.h"
/**
* 是否开启https SSL 验证
*
* @return YES为开启,NO为关闭
*/
#define openHttpsSSL YES
/**
* SSL 证书名称,仅支持cer格式。“app.bishe.com.cer”,则填“app.bishe.com”
*/
#define certificate @"baidu.com"
@implementation YYCHttpTool
/**
* GET请求
*
* @param url 请求路径
* @param params 请求参数
* @param success 请求成功
* @param failure 请求失败
*/
+(void)GET:(NSString *)url params:(NSDictionary *)params success:(void (^)(id))success failure:(void (^)(NSError *))failure
{
// 1.创建请求管理者
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
//设置加载时间
mgr.requestSerializer.timeoutInterval = 5.0f;
mgr.responseSerializer = [AFHTTPResponseSerializer serializer];
// 加上这行代码,https ssl 验证。
if(openHttpsSSL)
{
[mgr setSecurityPolicy:[self customSecurityPolicy]];
}
// 2.发送请求
[mgr GET:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (success) {
//序列化 返回dict
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:nil];
success(dict);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (failure) {
failure(error);
}
}];
}
/**
* POST请求
*
* @param url 请求路径
* @param params 请求参数
* @param success 请求成功
* @param failure 请求失败
*/
+(void)POST:(NSString *)url params:(NSDictionary *)params success:(void (^)(id))success failure:(void (^)(NSError *))failure
{
// 1.创建请求管理者
AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager];
//设置加载时间
mgr.requestSerializer.timeoutInterval = 5.0f;
mgr.responseSerializer = [AFHTTPResponseSerializer serializer];
// 加上这行代码,https ssl 验证。
if(openHttpsSSL)
{
[mgr setSecurityPolicy:[self customSecurityPolicy]];
}
// 2.发送请求
[mgr POST:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (success) {
//序列化 返回dict
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:nil];
success(dict);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (failure) {
failure(error);
}
}];
}
+ (AFSecurityPolicy*)customSecurityPolicy
{
// /先导入证书
NSString *cerPath = [[NSBundle mainBundle] pathForResource:certificate ofType:@"cer"];//证书的路径
NSData *certData = [NSData dataWithContentsOfFile:cerPath];
// AFSSLPinningModeCertificate 使用证书验证模式
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
// allowInvalidCertificates 是否允许无效证书(也就是自建的证书),默认为NO
// 如果是需要验证自建证书,需要设置为YES
securityPolicy.allowInvalidCertificates = YES;
//validatesDomainName 是否需要验证域名,默认为YES;
//假如证书的域名与你请求的域名不一致,需把该项设置为NO;如设成NO的话,即服务器使用其他可信任机构