AFNetworking 是常用的网络请求第三方,下面我就写一下用AFN进行get请求和post请求
我把AFN单独封装到了一个类里,并写在了一个+号方法里,以便调用.
GET
//AFN请求数据
+(void)getDataWithURL:(NSString *)url blcok:(AppToolsBlock)blcok{
//如果网址中有中文需要使用 : 中文编码
NSString *urlEncode = [url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
AFHTTPRequestOperationManager* manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain",@"text/json",@"application/json",@"text/javascript",@"text/html",nil];
[manager GET:urlEncode parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
//NSLog(@"使用AFN进行get请求 === %@",responseObject);
blcok(responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"失败==== %@",error);
}];
}
get请求和post请求区别:参数:
get请求的参数是直接添加在URL路径上,使用简单,但是用户的隐私信息都会暴露在外面(不安全)
post请求的参数会将一部分或者全部拿出去放在一个body体里,转成data形式数据来发送给报告者,外界不易截取(安全性高)
POST
+ (void)getDataWithPath:(NSString *)path Body:(NSDictionary *)body block:(AppToolsBlock)block{
NSString *urlStr = path;
NSString *urlEncode = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
//body体
NSDictionary *bodyDic = body;
AFHTTPRequestOperationManager *netManager = [AFHTTPRequestOperationManager manager];
netManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain",@"text/json",@"application/json",@"text/javascript",@"text/html",nil];
[netManager POST:urlEncode parameters:bodyDic success:^(AFHTTPRequestOperation *operation, id responseObject) {
// NSDictionary *dic = responseObject;
// NSLog(@"post请求成功====%@", dic);
block(responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"错误信息%@", error);
}];
}
在使用的时候导入这个类的头文件,直接调用方法,代入参数即可