1.下载最新版: AFNetwoking
地址:https://github.com/AFNetworking/AFNetworking.git
2. 导入头文件
#import "AFNetworking.h"
3.初始化
-(AFHTTPSessionManager*)manager{
if (!manager) {
manager = [AFHTTPSessionManager manager];
// 上传json格式
// manager.requestSerializer = [AFJSONRequestSerializer serializer];
// 上传普通格式
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
//返回到的是json数据
// manager.responseSerializer = [AFJSONResponseSerializer serializer];
// 返回的普通数据
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.requestSerializer.timeoutInterval = kTimeOutInterval;
manager.responseSerializer.acceptableContentTypes = [NSSet
setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", @"text/plain",nil];
}
return manager;
}
4.发起请求
AFHTTPSessionManager *manager = [self manager];
[manager POST:nil parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
} progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
}];
如果你的url 是http的 那么 到此 就可以返回数据了
如果你的url 是https 的 那么请继续往下看
5.https相关配置
== ①大部分需要证书
证书制作方法 :
在桌面建一个文件夹 名字随便起
打开终端 cd 空格 把刚才建的文件夹路径拖过来
按回车
输入下面语句
openssl s_client -connect www.baidu.com:443 </dev/null 2>/dev/null | openssl x509 -outform DER > https.cer
语句解释如下:www.baidu.com 是你请求的地址的域名
https.cer 将要生成的证书的名字 当然你可以随便起 a.cer b.cer sb.cer 但是重要的是要以 .cer 结尾
②退出终端
把刚才制作的 https.cer 证书 拖到项目
编写以下代码
- (AFSecurityPolicy*)customSecurityPolicyName:(NSString*)name
{
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"https" ofType:@"cer"];
NSData * certData =[NSData dataWithContentsOfFile:cerPath];
NSSet * certSet = [[NSSet alloc] initWithObjects:certData, nil];
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
// 是否允许,NO-- 不允许无效的证书
[securityPolicy setAllowInvalidCertificates:YES];
// 设置证书
[securityPolicy setPinnedCertificates:certSet];
return securityPolicy;
}
③一切准备就绪 可以发起请求了
AFHTTPSessionManager *manager = [self manager];
[manager setSecurityPolicy:[self customSecurityPolicyName:@"htttps"]];
[manager POST:nil parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
} progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
}];
④解析你的数据吧
一切准备就绪,coder 敲起来吧!!!
如有其它疑问 请留言
星爷至上